Spring中与JMS主题的并发性

时间:2014-04-17 07:12:58

标签: java concurrency jms jms-topic

如何使用spring在jms主题中使用并发?与队列一样,我们可以将maxConcurrentConsumers属性设置为所需的数字。但是,如果我为JMS主题执行此操作,则会导致同时使用同一消息,这是不可取的。

有人可以指出我正确的方向吗?

2 个答案:

答案 0 :(得分:0)

您以错误的方式使用DefaultMessageListenerContainer。来自文档:

  

请注意,动态扩展只对第一个队列有意义;对于某个主题,您通常会使用默认的1个消费者,否则您将在同一节点上多次收到相同的消息。

为了帮助您的情况,您可以将主题中的消息转发到队列,让消费者从此队列中消费。如果您的JMS提供程序具有某些转发功能,那么这只是对您的应用程序的配置更改。

答案 1 :(得分:0)

嗯,你自己在评论中说,但只是详细说明。

在侦听器内部,您仍然可以创建多个线程并以异步方式执行处理。只要您收到消息,就会将其发送给异步消费者。例如,通过某种执行程序可以很容易地实现这一点。

我真的会选择番石榴的EventBus 。它非常简单,但易于设置和使用。 但这是你的选择。