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进行生产者/消费者连接),故障转移工作正常……

那就是说…我在使用轮询消费者模式时看到其他消费者连接问题……必须手动关闭连接或其他东西。