根据DefaultMessageListenerContainer
的javadoc注意:不要将Spring的CachingConnectionFactory与动态缩放结合使用。理想情况下,根本不要将它与消息侦听器容器一起使用,因为通常最好让侦听器容器本身在其生命周期内处理适当的缓存。此外,停止和重新启动侦听器容器只能使用独立的本地缓存连接 - 而不是使用外部缓存连接。
我从本说明中了解到,我应该直接从供应商使用 ConnectionFactory 。
所以我的问题如下:
来自 ActiveMQ 的 ConnetionFactory 可以与 Spring 的 DefaultMessageListenerContainer 一起使用:
org.apache.activemq.ActiveMQConnectionFactory 或
org.apache.activemq.pool.PooledConnectionFactory ?
答案 0 :(得分:1)
池化连接工厂没问题但通常没必要,因为DMLC连接是长期存在的。
Spring SingleConnectionFactory
可能会更好,因为所有消费者都会共享一个连接(它是CachingConnectionFactory
的父级)。
javadocs中的注释源于缓存消费者的问题,而不是使用单一连接。
当会话/连接短暂时(例如,执行JmsTemplate
操作时),通常需要缓存/池。
如果您正在使用事务并且想要在侦听器的会话上执行JmsTemplate
操作,则必须将JmsTemplate
配置为使用与DMLC相同的连接工厂。