Why Connection.Start() hangs with fail-over protocol even with transport.startupMaxReconnectAttempts = 1

雷丹

新成员
已加入
2019年2月25日
留言内容
1
编程经验
1-3
我有一个C#Windows服务,该服务的使用者连接到Apache NMS.ActiveMQ,并侦听消息队列。 AMQ死后,我正在处理重新连接问题。
当我在ActiveMQ上启动服务时,方案存在问题。 URL看起来像这样:
故障转移://(tcp:// localhost:61616)?transport.initialReconnectDelay = 100&transport.startupMaxReconnectAttempts = 1

我希望行为如下:
如果我在ActiveMQ关闭时启动服务,那么我的使用者将尝试连接一次ActiveMQ(我将其配置为尝试仅连接一次以防止阻塞连接.Start()),如果失败,它将继续尝试连接每隔10秒钟(使用计时器)永久删除一次,直到ActiveMQ可用并且连接成功。

但是实际的行为是,经过几次尝试(不超过5次),connection.Start()挂起并且该服务即使可用也无法连接到ActiveMQ(我在连接前后都打印到了日志中。开始())。

transport.startupMaxReconnectAttempts = 1可以防止Start()永远挂起,但对我而言没有帮助。
注意:如果删除“ transport.startupMaxReconnectAttempts = 1”,则connection.Start()仍然挂起,这使我无法停止该服务。
我尝试将transport.timeout = 5000添加到URL,但是仍然出现此问题。

感谢您提供的任何帮助
 
最佳 底部