ActiveMQ故障转移:如何检测应用程序何时启动并且找不到代理

我正在使用ActiveMQ故障转移

 

 

failover:(tcp://host1:61616,tcp://host2:61616)

我想提醒一下当host1和host2都不可用时.

如果应用程序已经连接到代理,则可以通过TransportListener检测其何时进行故障转移.初始连接期间不可能做到这一点.它将挂起,反复重试每个代理.这是理想的行为,因为我希望它继续尝试进行连接,但是我也想通知它有问题,以便我可以发出警报,并且有人可以调查它.

一种解决方案是使用

 

failover:(tcp://host1:61616,tcp://host2:61616)?startupMaxReconnectAttempts=1

这意味着它将尝试每个主机,然后引发异常,我的应用程序可以通过发出警报然后尝试再次连接来处理该异常.这不是理想的,因为我的应用程序必须有效地复制ActiveMQ重新连接逻辑.

有没有更好的方法来检测初始连接上的代理问题?

最佳答案

简短的回答:不,从客户端(应用程序)启动角度无法了解.

 

长答案:作为一个应用程序,您只会知道以下情况:根本没有代理(通过startupMaxReconnectAttempts),或者何时从一个代理切换到另一个代理.这是预期和期望的行为,因为故障转移机制的重点是将所有这些信息隐藏在消费者面前.

可能有一些解决方法(例如,使用dynamic network of brokers),但是比您提出的解决方案需要更多的逻辑.

我认为您正在尝试使用错误的工具解决问题:使用故障转移机制(具有最大的重新连接和适当的超时)只能确保您在真正出现问题时得到通知(根本没有中介可用).
其他经纪人的“健康”或“连通性”需要一个单独的机制(在系统级别-使用监视工具-或在应用程序级别-开发一些机制以使uri列表中的所有经纪人保持活跃)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值