ActiveMQ NMS:当代理关闭时,connection.start() 使用故障转移协议挂起

Posted

技术标签:

【中文标题】ActiveMQ NMS:当代理关闭时,connection.start() 使用故障转移协议挂起【英文标题】:ActiveMQ NMS: connection.start() hangs with Failover protocol when broker is down 【发布时间】:2012-06-08 11:55:59 【问题描述】:

我有使用 nms.activemq 1.5.0 的 C# 应用程序。

当我的应用程序启动时,它会尝试使用故障转移协议连接到代理(我在主从配置中有两个代理)。 如果两个经纪人都因为connection.start() 而停止了我的应用程序。 我尝试了我在网上找到的所有信息 - 我尝试了故障转移协议的每个属性,还尝试了设置连接超时,尝试了 transport.requesttimeout

我也尝试了更新版本的 nms.activemq,但似乎没有任何解决问题的方法。

对可能导致此问题的原因或任何解决方法有任何想法吗?

【问题讨论】:

这很奇怪,但在 1.5.5 版本中,即使在 connection.ClientId 属性分配时它也会挂起(使用故障转移模式),这在 . NET,因为属性应该代表简单、快速、非阻塞的操作。 【参考方案1】:

挖掘google结果后发现this thread

Tim Bish 在那里回答开发人员,在 NMS 中有一个前缀 transport.* 需要添加到所有传输属性中。

我原来的 uri 是:

failover://(tcp://A,tcp://B)?randomize=true&startupMaxReconnectAttempts=1&timeout=2000

现在我的 URI 是(注意 transport.* 前缀):

failover://(tcp://A,tcp://B)?transport.randomize=true&transport.startupMaxReconnectAttempts=1&transport.timeout=2000

这是有效的,我处理抛出的异常并继续我的应用程序。

享受

【讨论】:

以上是关于ActiveMQ NMS:当代理关闭时,connection.start() 使用故障转移协议挂起的主要内容,如果未能解决你的问题,请参考以下文章

使用 C# 和 Apache NMS 的 ActiveMQ - 对队列中的消息进行计数

ActiveMq NMS 大约 30 秒后断开连接

activemq artemis关于 Apache.NMS.AMQP 使用注意事项。

.Net NMS.ActiveMQ 我应该存储消息发送调用之间的会话和连接吗

ActiveMQ NMS C# 对象消息使用啥序列化方法?

ActiveMq C#客户端 消息队列的使用(存和取)