如何使用spring在jms主题中使用并发?与队列一样,我们可以将maxConcurrentConsumers属性设置为所需的数字。但是,如果我为JMS主题执行此操作,则会导致同时使用同一消息,这是不可取的。
有人可以指出我正确的方向吗?
答案 0 :(得分:0)
您以错误的方式使用DefaultMessageListenerContainer。来自文档:
请注意,动态扩展只对第一个队列有意义;对于某个主题,您通常会使用默认的1个消费者,否则您将在同一节点上多次收到相同的消息。
为了帮助您的情况,您可以将主题中的消息转发到队列,让消费者从此队列中消费。如果您的JMS提供程序具有某些转发功能,那么这只是对您的应用程序的配置更改。
答案 1 :(得分:0)
嗯,你自己在评论中说,但只是详细说明。
在侦听器内部,您仍然可以创建多个线程并以异步方式执行处理。只要您收到消息,就会将其发送给异步消费者。例如,通过某种执行程序可以很容易地实现这一点。
我真的会选择番石榴的EventBus 。它非常简单,但易于设置和使用。 但这是你的选择。