Чтобы начать, я просто хочу сообщить, что я новичок в Camel, и совсем недавно я понял его основные понятия.Базовый Apache Camel LoadBalancer Failover Пример
Я пытаюсь создать базовый рабочий пример, используя Apache-Camel с ActiveMQ в качестве брокера и используя jms-компонент в качестве клиента loadbalancer, используя конструкцию failover. Все это делается только с использованием 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();
}
}
Я рассмотрел используя camel-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 не удалось?
- Какой компонент верблюда следует использовать?
Если бы вы могли предоставить любые отзывы о моем коде и о том, как исправить проблему, я был бы более благодарен.