DefaultMessageListenerContainer concurrentConsumers

时间:2016-06-23 20:46:46

标签: spring-jms

我有一个关于带有多个concurrentConsumers的DefaultMessageListenerContainer的问题,容器为每个消费者创建不同的会话,但问题是容器只允许在所有消费者之间共享一个消息列表器实例,这样我就收不到很多消息和对待它们是并行的,因为每个线程都会等待监听器可用,允许每个并发的Consumer都有一个独立的消息监听器实例来处理消息是不是更好?

1 个答案:

答案 0 :(得分:1)

容器设计用于线程安全(无状态)侦听器 - 即没有不受保护的全局状态。

听起来好像使用synchronized来保护状态,一次只允许一个侦听器线程。

如果你不能使你的监听器bean线程安全,你需要使用多个容器,每个容器都有一个不同的监听器bean(你可以使用原型范围,这样每个容器都有自己的bean),并发度为1。