我正在使用ActiveMQ故障转移ActiveMQ故障转移:如何检测应用程序何时启动并找不到代理
failover:(tcp://host1:61616,tcp://host2:61616)
我想在host1和host2都不可用时提醒。
如果应用程序已连接到代理程序,则可以通过TransportListener检测它何时进行故障切换。在初始连接期间,这是不可能的。它会挂起,反复重试每个经纪人。这是我希望的行为,因为我希望它继续尝试连接,但是我也想通知它有问题,以便我可以提醒,并且有人可以查看它。
一种解决方案是使用
failover:(tcp://host1:61616,tcp://host2:61616)?startupMaxReconnectAttempts=1
这意味着它会尝试每一个主机,然后抛出一个异常,这我的应用程序都可以向,然后尝试重新连接处理。这并不理想,因为我的应用程序必须有效地复制ActiveMQ重新连接逻辑。
有没有更好的方式检测初始连接上的代理问题?
不知道你在问什么... startupMaxReconnectAttempts听起来像它给你你想要的错误反馈。如果不会尝试重新连接,因为您将它设置为1 ... – 2013-02-14 16:31:21
正如我所说的,startupMaxReconnectAttempts = 1是一个解决方案。我的问题是,在应用程序启动时是否有更好的方法来检测不可用的代理?即一个不需要我的应用程序代码来处理在代理不可用时发出警报后重新连接。就像使用TransportListener获取故障切换一样。另外,检测单个经纪人不可用的方式将是有用的。 – Spycho 2013-02-15 09:51:47