Базовый пример отработки отказа Apache Camel LoadBalancer

Для начала я просто хочу сообщить вам, что я новичок в Camel, и совсем недавно я понял его основные концепции.

Я пытаюсь создать базовый рабочий пример, используя Apache-Camel с ActiveMQ в качестве брокера и используя jms-компонент в качестве клиента loadbalancer, используя конструкцию аварийного переключения. Все это делается только с использованием Java DSL (если возможно).

Пример состоит из 4 основных приложений, которые называются MyApp-A, MyApp-B, MyApp-C и MyApp-D. В обычном сценарии MyApp-A читает файл с моего компьютера, а затем преобразует его в сообщение. Затем он отправляет это сообщение в MyApp-B, а MyApp-B отправляет его в MyApp-C.

Тем не менее, есть сценарий сбоя. В этом случае MyApp-A не удается отправить сообщение MyApp-B. Затем он отправляет сообщение в MyApp-D, которое, в свою очередь, отправляет его в MyApp-C.

Сильфон это мой код для 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();
    }
}

Я рассмотрел использованиеверблюд-FTP но это не будет работать, потому что MyApp-C не будет знать, что MyApp-B умер, и не будет знать, что он должен был извлечь из MyApp-D.

Теперь у меня есть несколько проблем и вопросов:

Как отправить сообщение (в данном случае файл) из MyApp-A в MyApp-B, который является другим приложением? Что я должен на самом деле положить в.to(String) метод Java DSL?Как я на самом деле код MyApp-B? Как заставить его получить сообщение от A (которое является другим приложением, возможно, на другом компьютере) и отправить его на MyApp-C (я предполагаю, что если я узнаю, как отправить с MyApp-A на MyApp-B, Я буду знать, как отправить из MyApp-B в MyApp-C)?Как MyApp-A обнаружит сбой MyApp-B?Какой компонент верблюда я должен использовать?

Если бы вы могли оставить отзыв о моем коде и о том, как решить проблему, я был бы более чем благодарен.

Ответы на вопрос(1)

Ваш ответ на вопрос