1

为了尝试减轻在我的应用程序中出现 ActiveMQ 连接问题期间可能出现的任何挂起,我正在考虑将以下参数添加到我的应用程序中的代理连接字符串:

?transport.requesttimeout=10000

根据这个资源,这似乎有助于处理这些事件。

但是,我似乎无法让它与我当前的故障转移连接字符串一起使用,如下所示:

failover:(tcp://masterbroker:61616,tcp://slavebroker:61616)?keepAlive=true

因此添加它:

failover:(tcp://masterbroker:61616,tcp://slavebroker:61616)?keepAlive=true&transport.requesttimeout=10000

或者,或者像这样:

failover:(tcp://masterbroker:61616?transport.requesttimeout=10000,tcp://slavebroker:61616?transport.requesttimeout=10000)?keepAlive=true

...两者似乎都会导致 NMS 异常或连接失败。

这似乎是一个相对微不足道的问题,但是如何在这种类型的连接字符串中指定传输特定指令?

4

2 回答 2

1

在询问这些问题时,您应该始终添加您使用的 NMS.ActiveMQ 版本,因为版本之间的行为会有所不同。假设您使用的是最新版本,如果您尝试连接到代理并且它在大约 10 秒后没有运行,我希望第一个表单中出现 NMSException,这就是 URI 告诉它的第二个URI 无效,因为适用于故障转移配置的内部 URI 的唯一选项是被调用的传输类型的选项,在这种情况下是 TCP。

退后一步并解释您在此处尝试完成的工作可能会更好,因为我真的不知道您应用请求超时选项的原因是什么。在大多数情况下,我不会推荐此选项。

此外,keepAlive 选项在这里没有任何影响,因为它没有应用于 tcp 传输,所以它只会被忽略。除此之外,tcp 套接字保持活动实际上是无用的,因为它每两个小时左右才启动一次,除非您禁用不活动监视器,否则 tcp 传输将为您进行自己的心跳,因此他们不需要 keepAlive = true。

如果您可以提供更多关于您看到的异常是什么或您试图通过请求超时解决什么问题的信息,我可能会更好地回答您的问题。

-蒂姆 www.fusesource.com

于 2011-04-10T15:18:12.553 回答
-1

而不是transport.requesttimeout=10000使用connection.RequestTimeout=10000

于 2018-10-29T11:42:47.280 回答