Exemplo básico de failover de LoadBalancer do Apache Camel

Para começar, quero apenas que você saiba que sou novo no Camel e, muito recentemente, compreendi seus principais conceitos.

Eu estou tentando criar um exemplo básico de trabalho usando o Apache-Camel com o ActiveMQ como um intermediário e usando o jms-component como um cliente de um balanceador de carga usando a construção de failover. Tudo isso é feito usando apenas o Java DSL (se possível).

O exemplo consiste em 4 aplicativos principais, chamados MyApp-A, MyApp-B, MyApp-C e MyApp-D. Em um cenário normal MyApp-A lê um arquivo do meu computador e, em seguida, transforma em uma mensagem. Em seguida, ele envia essa mensagem para MyApp-B e MyApp-B envia para MyApp-C.

No entanto, há um cenário de falha. Nesse cenário, MyApp-A não consegue enviar a mensagem para MyApp-B. Em seguida, ele envia a mensagem para MyApp-D, que por sua vez envia para MyApp-C.

Abaixo está o meu código para MyApp-A

public class MyApp-A {

    public static void main(String args[]) throws Exception {
        // create CamelContext
        CamelContext context = new DefaultCamelContext();

        // connect to embedded ActiveMQ JMS broker
        ConnectionFactory connectionFactory = 
            new ActiveMQConnectionFactory("vm://localhost");
        context.addComponent("jms",
            JmsComponent.jmsComponentAutoAcknowledge(connectionFactory));

        // add our route to the CamelContext
        context.addRoutes(new RouteBuilder() {
            @Override
            public void configure() {
                from("file:data/inbox?noop=true")loadbalancer().failover().to("MyApp-B:incomingOrders").to("MyApp-D:incomingOrders").end();
            }
        });

        // start the route and let it do its work
        context.start();
        Thread.sleep(10000);

        // stop the CamelContext
        context.stop();
    }
}

Eu considerei usar ocamel-ftp mas não funcionaria porque MyApp-C não saberia que MyApp-B morreu e não saberia que ele tinha que buscar a partir do MyApp-D.

Agora tenho vários problemas e dúvidas:

Como faço para enviar uma mensagem (neste caso, o arquivo) do MyApp-A para o MyApp-B, que é um aplicativo diferente? O que devo realmente colocar no.to(String) método do Java DSL?Como faço para codificar MyApp-B? Como eu faço para receber uma mensagem de A (que é um aplicativo diferente, possivelmente em uma máquina diferente) e enviá-lo para MyApp-C (suponho que, se eu descobrir como enviar de MyApp-A para MyApp-B, Eu vou saber como enviar do MyApp-B para MyApp-C)?Como o MyApp-A detectará que o MyApp-B falhou?Qual componente de camelo devo usar?

Se você pudesse fornecer qualquer feedback sobre o meu código e sobre como corrigir o problema, eu ficaria muito grato.

questionAnswers(1)

yourAnswerToTheQuestion