JMS消息和JMS消息的负载平衡

时间:2013-04-02 04:31:51

标签: spring spring-mvc jms activemq

遇到此设计问题并尝试使用JMS找到实现它的最佳方法。

Web App具有单个Listener和多个Producer以及多个WorkerBee。监听器将消息从其队列推送到WorkerBee。生成的所有消息都在监听器中排队。我想实现一个进程,而不是使用某种负载平衡过程将消息从Listener队列发送到每个WorkerBee。在侦听器队列或WorkerBee队列中只发生单个消息实例。

最好的办法是什么? JMS听起来是个不错的选择吗?如何将消息从Listener队列推送到WorkerBee队列?

公开提示:)并感谢您的回复。

2 个答案:

答案 0 :(得分:3)

消息传递是此类任务的不错选择。我认为你应该使用 Apache Camel 框架作为路由平台用于描述目的。它允许以非常优雅的方式将业务逻辑从集成级别划分。

Camel 支持大量“开箱即用”的组件,包括JMS endpoints。 您可以使用Load Balancer模式委托您的某个WorkerBee。

答案 1 :(得分:2)

JMS听起来不错,因为你有多个WorkerBee实例,所有的WorkerBee都可以监听单个队列,例如到InWorkBeeQueue。

现在,您可以将消息从Web App侦听器发布到InWorkBeeQueue。编写一个简单的Java JMS生成器代码来将消息发布到此队列。根据WorkBee的免费实例,它将从InWorkBeeQueue中读取消息并进行处理。

如果您想避免编写新的JMS生成器代码,可以使用Apache Camel路由直接将消息从Web应用程序队列映射到InWorkBeeQueue。