我可以从其他计算机或JVM访问SEDA或VM队列吗?
我实际上想在Camel的帮助下实现负载平衡,但不想为此引入另一个消息传递框架。我只是想使用一些内置队列从生产者向不同的消费者分配负载
可能吗?如果不是那么我的选择是什么?
另一种方法:(拉动方法)
不确定新方法的优化程度或新方法的优缺点是什么,所以请帮我分析一下这种方法
消息将被放入主队列,并且所有工作者系统将监听主队列。比方说,100,000个消息被放入主队列,5个工作系统正在监听它。工作系统将从主队列中逐个处理消息。这种方法有两大好处:
答案 0 :(得分:2)
SEDA和VM端点分别对主机Context和JVM有效。为了便于JVM到JVM的消息传递,您需要使用线上协议组件,例如但不限于Mina,HTTP或JMS。
答案 1 :(得分:2)
SEDA和VM://仅在同一个JVM上工作。
通常使用JMS和Competing Consumers pattern实现Java消息传递中的负载平衡。您将消息发送到队列,并且多个消费者竞争处理它们。
如果拥有队列的经纪人成为瓶颈 - 请考虑使用扇出模式和经纪人网络。
答案 2 :(得分:1)
最简单的方法是使用jms。如果有n条路由侦听同一个jms队列,那么它们将自动进行负载均衡。如果一个人离开,负载将在剩余的负载上保持平衡。我建议从ActiveMQ开始,因为它很容易设置并与Camel良好集成。为了使代理具有高可用性,您可以设置两个独立代理或为每个camel实例设置一个嵌入式代理。