ActiveMQ和CachingConnectionFactory的自动连接问题
我遇到了ActiveMQ和Spring的CachingConnectionFactory
。 我这样设置它们:
jms.url
正在使用故障转移传输:
failover:(tcp://firstbox:6166,tcp://secondbox:6166)?timeout=3000
我遇到的问题是,如果一个盒子出现故障,我们应该开始在另一个盒子上发送消息,但它似乎仍在使用旧连接(每次发送超时)。 如果我重新启动程序,它将再次连接,一切正常。
我的理解是ActiveMQConnectionFactory
应该自行修复(重新连接到一个新的框),并且JmsTemplate
应该每次都请求一个新的连接,所以这应该没问题。 我想知道CachingConnectionFactory
是否可能做坏事(缓存与旧服务器通信的生产者?)。
我错过了我需要做的事吗? 我的设置似乎很正常,但我找不到其他人有这个问题。
我遇到的问题是ActiveMQ在重新连接时没有告诉CachingConnectionFactory
,因此仍在使用缓存连接。 我用ActiveMQ的PooledConnectionFactory
替换它,问题就消失了。
仅供参考,我刚刚测试了两个本地AMQ代理之间的这种情况(使用CachingConnectionFactory进行生产者/消费者连接),故障转移工作正常……
那就是说…我在使用轮询消费者模式时看到其他消费者连接问题……必须手动关闭连接或其他东西。