0

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

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

4

2 回答 2

0

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

请注意,动态缩放首先只对队列有意义;对于一个主题,您通常会坚持使用默认数量的 1 个消费者,否则您将在同一个节点上多次收到相同的消息。

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

于 2014-04-17T08:33:24.723 回答
0

好吧,您在评论中自己说过,但只是为了详细说明。

在您的侦听器中,您仍然可以创建多个线程并以异步方式执行处理。收到消息后,立即将其发送给异步使用者。例如,这很容易通过某种执行器来实现。

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

于 2014-04-17T13:26:50.973 回答