我正在阅读有关DefaultMessageListenerContainer
的春季文档它说“注意:不要将Spring的CachingConnectionFactory与动态扩展结合使用。理想情况下,根本不要将它与消息侦听器容器一起使用,因为通常最好让侦听器容器本身处理适当的缓存它的生命周期。此外,停止和重新启动监听器容器只能使用独立的本地缓存连接 - 而不是外部缓存的连接。“
有人可以解释原因吗?
答案 0 :(得分:10)
cacheConsumers = true
(默认值)。当使用动态扩展并且监听器停止时,会话将返回到缓存,但是代理不知道没有人会实际从该会话中消耗,因此您会遇到缓存中的消息,直到缓存中才会被读取当卷增加时,该会话恰好被重用。注意:如果您希望容器线程上运行JmsTemplate
参与容器事务,应使用CachingConnectionFactory
,以便生成器可以缓存,但是如果你有可变并发性,你应该在工厂中禁用缓存消费者。