0

有这个设计问题,并试图找到使用 JMS 实现它的最佳方法。

Web App 有一个 Listener、多个 Producer 和多个 WorkerBee。侦听器将消息从其队列推送到 WorkerBee。产生的所有消息都在侦听器中排队。我想实现一个过程,该过程可以使用某种负载平衡过程从侦听器队列向每个 WorkerBee 发送消息。Listener 队列或 WorkerBee 队列中仅出现消息的单个实例。

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

开放供建议:) 并感谢您的回复。

4

2 回答 2

3

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

Camel支持许多“开箱即用”的组件,包括JMS 端点您可以使用负载均衡器模式委托给您的 WorkerBee 之一。

于 2013-04-02T13:08:26.613 回答
2

JMS 听起来是个不错的选择,因为您有多个 WorkerBee 实例,所以让所有 WorkerBee 监听一个队列,例如 InWorkBeeQueue。

现在您可以将消息从 Web App 侦听器发布到 InWorkBeeQueue。编写一个简单的 java JMS 生产者代码,将消息发布到此队列。根据 WorkBee 的哪个实例是空闲的,它将从 InWorkBeeQueue 读取消息并处理它。

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

于 2013-04-02T13:35:09.463 回答