Java 基本Apache Camel负载平衡器故障切换示例
首先,我只想让你们知道我是骆驼队的新手,最近我掌握了骆驼队的主要概念 我试图创建一个基本的工作示例,使用ApacheCamel和ActiveMQ作为代理,并使用jms组件作为使用故障转移构造的负载平衡器的客户端。所有这些都只使用JavaDSL来完成(如果可能的话) 该示例由4个主要应用程序组成,分别称为MyApp-A、MyApp-B、MyApp-C和MyApp-D。在正常情况下,MyApp-A从我的计算机读取文件,然后将其转换为消息。然后它将该消息发送到MyApp-B,MyApp-B将其发送到MyApp-C 然而,有一个失败的场景。在这种情况下,MyApp-A无法将消息发送到MyApp-B。然后,它将消息发送到MyApp-D,而MyApp-D又将消息发送到MyApp-C 下面是MyApp-A的my代码Java 基本Apache Camel负载平衡器故障切换示例,java,ftp,apache-camel,load-balancing,failover,Java,Ftp,Apache Camel,Load Balancing,Failover,首先,我只想让你们知道我是骆驼队的新手,最近我掌握了骆驼队的主要概念 我试图创建一个基本的工作示例,使用ApacheCamel和ActiveMQ作为代理,并使用jms组件作为使用故障转移构造的负载平衡器的客户端。所有这些都只使用JavaDSL来完成(如果可能的话) 该示例由4个主要应用程序组成,分别称为MyApp-A、MyApp-B、MyApp-C和MyApp-D。在正常情况下,MyApp-A从我的计算机读取文件,然后将其转换为消息。然后它将该消息发送到MyApp-B,MyApp-B将其发送到M
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();
}
}
我曾考虑过使用,但它不会起作用,因为MyApp-C不会知道MyApp-B已经死亡,也不会知道它必须从MyApp-D获取数据
现在我有几个问题:
.to(String)
方法中实际添加什么如果您能就我的代码以及如何解决问题提供任何反馈,我将不胜感激。经过大量努力,我已经找到了一种基于apache提供的loadbalancer示例的实现方法 我已将eclipse项目上载到我的github帐户,您可以在此处检查它是否正常工作:
- 它使用SpringDSL而不是JavaDSL
- MyApp-A是负载均衡器。每10次,它生成一份报告(而不是读取文件),并将其发送到MyApp-B
- MyApp-B对应于本地主机9991上的MINA服务器1
- MyApp-C对应于本地主机9993上的MINA服务器3
- MyApp-D对应于本地主机9992上的MINA服务器2
- MyApp-C收到报告后,会将其发送回MyApp-A
mvn exec:java-Pmina1 mina2: mvn exec:java-Pmina2 mina3: mvn exec:java-Pmina3 负载平衡: mvn exec:java-Ploadbalancer 如果您遇到任何问题,请在骆驼论坛上告知我们
佩德罗·马丁斯
编辑 在上一篇文章中,我有两个问题: 1.如何在JavaDSL中做到这一点 2.为什么mina服务器发送回复 我最终将讨论问题1,但我只想说明问题2的解决方案如下: 感谢克劳斯先生的回答和建议
编辑 这两个问题现在都解决了,并且都在同一个git存储库中。我希望我的代码能帮助人们