如何同时处理异步jms队列消息?

时间:2014-04-06 04:44:46

标签: java jms

我的JMS使用者在白天在JMS队列上生成任意数量的消息。一旦一个 消息到达它转到消息监听器。如果介于两者之间我需要一些其他消息,它会转到另一个消息监听器不等待第一个消息吗?

根据我的理解,我需要创建两个消费者(假设我想同时处理2个消息),每个消费者都有自己的会话。两个消费者都可以使用相同的消息监听器。对?

我不确定我是否可以通过单个消费者实现这一目标,但我可以与多个听众合作吗?

像这样Single queue: concurrent message processing with multiple consumers

1 个答案:

答案 0 :(得分:1)

根据JMS documentation @bgth引用,单个会话中的多个MessageListener不会提供并发性:

"用于创建消息使用者的会话序列化了在会话中注册的所有消息侦听器的执行。 任何时候,只有一个会话的消息监听器正在运行"

对于并发性,您需要在单独的线程中使用多个会话和多个使用者。在这种情况下,您可以重用相同的MessageListener,但它必须是线程安全的。