我想知道如果指向一个主题的MessageListenerContainer同时收到 2 条(或更多)消息会发生什么。
例如,应用程序的 2 个用户同时触发发布,因此 2 个jmstemplate调用向同一主题发送 2 个不同的消息。
容器将如何处理这个问题?
- 容器会创建 2 个线程同时调用MessageListenerAdapter(应该实现为线程安全)吗?
- 或者容器是否只有 1 个线程连续(按顺序)调用MessageListenerAdapter ?
我想知道如果指向一个主题的MessageListenerContainer同时收到 2 条(或更多)消息会发生什么。
例如,应用程序的 2 个用户同时触发发布,因此 2 个jmstemplate调用向同一主题发送 2 个不同的消息。
容器将如何处理这个问题?
并发设置控制有多少侦听器同时使用消息。您不应为主题使用超过 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