Spring JMS MessageListenerContainer同时接收消息?

时间:2013-06-07 10:43:40

标签: java jms mq spring-jms

我想知道如果 MessageListenerContainer 指向某个主题,同时收到2条(或更多条)消息会发生什么。

例如,该应用的2个用户同时触发发布,因此2 jmstemplate 调用向同一主题发送2个不同的消息。

容器将如何处理?

  1. 容器是否会同时创建两个调用 MessageListenerAdapter (应该实现为线程安全)的线程?
  2. 容器只有一个线程串行(顺序)调用 MessageListenerAdapter 吗?

1 个答案:

答案 0 :(得分:1)

并发设置控制并发消息消息的数量。您不应该为主题使用多于1个使用者,否则,该消息可能会在同一节点上使用两次。

<jms:listener-container
  container-type="default"
  connection-factory="connectionFactory"
  acknowledge="auto"
  concurrency="1"     
  cache="consumer">
  <jms:listener destination="TEST.FOO" 
                ref="simpleMessageListener"
                method="onMessage" />
</jms:listener-container>

看到这个...... https://stackoverflow.com/a/5808803/791406

Spring Docs ...... http://static.springsource.org/spring/docs/3.0.5.RELEASE/api/org/springframework/jms/listener/DefaultMessageListenerContainer.html