对于spring的DefaultMessageListenerContainer,推荐使用哪一个ActiveMQConnectionFactory或ActiveMQ PooledConnectionFactory?

时间:2014-09-18 13:46:00

标签: jms activemq spring-integration

根据DefaultMessageListenerContainer

的javadoc
  

注意:不要将Spring的CachingConnectionFactory与动态缩放结合使用。理想情况下,根本不要将它与消息侦听器容器一起使用,因为通常最好让侦听器容器本身在其生命周期内处理适当的缓存。此外,停止和重新启动侦听器容器只能使用独立的本地缓存连接 - 而不是使用外部缓存连接。

我从本说明中了解到,我应该直接从供应商使用 ConnectionFactory

所以我的问题如下:

来自 ActiveMQ ConnetionFactory 可以与 Spring DefaultMessageListenerContainer 一起使用:

org.apache.activemq.ActiveMQConnectionFactory
org.apache.activemq.pool.PooledConnectionFactory

1 个答案:

答案 0 :(得分:1)

池化连接工厂没问题但通常没必要,因为DMLC连接是长期存在的。

Spring SingleConnectionFactory可能会更好,因为所有消费者都会共享一个连接(它是CachingConnectionFactory的父级)。

javadocs中的注释源于缓存消费者的问题,而不是使用单一连接。

当会话/连接短暂时(例如,执行JmsTemplate操作时),通常需要缓存/池。

如果您正在使用事务并且想要在侦听器的会话上执行JmsTemplate操作,则必须将JmsTemplate配置为使用与DMLC相同的连接工厂。