我正在开发一个全新的项目,我需要让听众使用来自多个队列的消息(现在不需要生成器)。
从头开始,我使用的是最后一个Spring JMS版本(4.1.2)。
以下是我的配置文件的摘录:
<bean id="cachedConnectionFactory"
class="org.springframework.jms.connection.CachingConnectionFactory"
p:targetConnectionFactory-ref="jmsConnectionFactory"
p:sessionCacheSize="3" />
<bean id="jmsListenerContainerFactory"
class="org.springframework.jms.config.DefaultJmsListenerContainerFactory"
p:connectionFactory-ref="cachedConnectionFactory"
p:destinationResolver-ref="jndiDestinationResolver"
p:concurrency="3-5"
p:receiveTimeout="5000" />
但我认为我可能错了,因为DefaultJmsListenerContainerFactory将构建常规的DefaultMessageListenerContainerS。并且,如doc中所述,CachingConnectionFactory不应与消息侦听器容器一起使用...
感谢您提供任何提示
答案 0 :(得分:0)
SingleConnectionFactory
并没有多大好处;默认情况下,DMLC
将使用供应商工厂中的所有消费者线程(cacheLevel >= CACHE_CONNECTION
)的单个连接,除非配置了TransactionManager
。backOff
属性之前 - backOff
只是为重新连接算法增加了更多的复杂性 - 它过去每n秒重试一次(5默认值)。正如您所引用的答案所述,只要禁用消费者缓存,就可以使用CCF
。
更正:是的,在使用SingleConnectionFactory
时,执行需要将reconnectOnException
设置为true
才能使用{{1}}容器以正确恢复其连接。否则,它只是分发陈旧的连接。