我正在使用 ActiveMQ 故障转移,例如
failover:(tcp://host1:61616,tcp://host2:61616)
我想在 host1 和 host2 都不可用时发出警报。
如果应用程序已经连接到代理,您可以通过 TransportListener 检测它何时进行故障转移。在初始连接期间也是不可能的。它只会挂起,反复重试每个代理。这是期望的行为,因为我希望它继续尝试连接,但是我也希望收到它有问题的通知,以便我可以发出警报,并且有人可以调查它。
一种解决方案是使用
failover:(tcp://host1:61616,tcp://host2:61616)?startupMaxReconnectAttempts=1
这意味着它将尝试每个主机然后抛出一个异常,我的应用程序可以通过警告然后再次尝试连接来处理它。这并不理想,因为我的应用程序必须有效地复制 ActiveMQ 重新连接逻辑。
有没有更好的方法来检测初始连接时的代理问题?