【发布时间】:2016-01-28 02:53:03
【问题描述】:
我有一个应用程序使用我的 AMQ 代理上的队列中的消息。我可能需要这个应用程序的多个实例(出于性能原因),在这种情况下,每个实例都应该使用来自队列的消息的一个子集。该子集应根据传入消息中“HeaderA”标头的值进行选择。
即
- 实例 1 使用 HeaderA == x 的消息
- 实例 2 使用 HeaderA == Y 的消息
- 等
(注意:我知道这种设计不是很好,如果所有实例都等效并且可以使用任何消息会更好,但由于外部原因我受限于这种设计)
我正在考虑两种方法;
使用 Apache Camel 在代理上路由消息,以便 为每个唯一值创建一个单独的队列(动态创建) '标题A'。然后每个实例动态订阅它的队列 有兴趣。
每个实例在同一个队列上创建一个消费者,但使用 JMS 选择器只使用它感兴趣的那些消息。
哪种方法会被认为是“最好的”,为什么?为唯一的标头值创建潜在的数千个单独的队列是否危险?使用 JMS 选择器有什么注意事项吗?
【问题讨论】:
标签: filter queue jms activemq consumer