開始我只想讓你知道我是駱駝新手,最近我掌握了它的主要概念。基本的Apache Camel LoadBalancer故障轉移示例
我想創建一個基本的工作示例,使用Apache-Camel和ActiveMQ作爲代理,並使用jms-component作爲使用故障轉移構造的負載均衡器的客戶端。所有這些僅使用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這是一個不同的應用程序?我應該怎樣在Java DSL的
.to(String)
方法中加入? - 我該如何編寫MyApp-B?如何讓它從A(這是一個不同的應用程序,可能位於不同的機器)接收消息並將其發送給MyApp-C(我假設如果我找到了如何從MyApp-A發送到MyApp-B,我會知道如何從MyApp-B發送到MyApp-C)?
- MyApp-A如何檢測到MyApp-B失敗?
- 我應該使用哪種駱駝組件?
如果你能提供任何有關我的代碼和如何解決問題的反饋,我會更感激。