java - Spring JMS MessageListenerContainer 同时接收消息?

标签 java jms mq spring-jms

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

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

容器将如何处理这个问题?

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

最佳答案

并发设置控制有多少监听器同时使用消息。主题不应使用超过 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 文档... http://static.springsource.org/spring/docs/3.0.5.RELEASE/api/org/springframework/jms/listener/DefaultMessageListenerContainer.html

关于java - Spring JMS MessageListenerContainer 同时接收消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16982205/

相关文章:

java - SystemClock 卡住系统

java - 我可以访问非 EE java 上的 JMS 吗?

java - 我应该使用 'synchronized' 版本作为 'onMessage' 中的集合消息吗?

transactions - JMS 事务问题

c#-4.0 - 使用托管客户端时出现 MQRC_Q_MGR_NOT_AVAILABLE

java - MQQueueConnection.start不会持续监听新消息

apache - 从 IBM MQ 迁移到 ActiveMQ 的过程

具有 2 列的 Java ArrayList

java - 基于另一个类创建一个类的实例

java - jackson 不会忽略未注释的字段