ActiveMQ NMS:将transport.requesttimeout与故障转移传输一起使用

时间:2011-04-10 12:56:47

标签: c# .net activemq nms

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

?transport.requesttimeout=10000

根据this resource,这看起来好像有助于处理这些事件。

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

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异常或连接失败。

这似乎是一个相对简单的问题,但如何在此类连接字符串中指定传输特定指令?

2 个答案:

答案 0 :(得分:1)

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

最好退一步说明你要在这里完成什么,因为我真的不知道你应用请求超时选项的原因是什么。在大多数情况下,我不会推荐这个选项。

另外keepAlive选项在这里没有任何影响,因为它没有应用于tcp传输,因此它将被忽略。除了tcp套接字保持活动几乎没用,因为它只会每两个小时左右启动一次,tcp传输将为你做自己的听力,除非你禁用不活动监视器,所以他们不需要keepAlive = true。

如果您可以提供更多信息,了解您所看到的例外情况或您尝试使用请求超时解决的问题,我可以更好地回答您的问题。

-Tim www.fusesource.com

答案 1 :(得分:-1)

使用transport.requesttimeout=10000代替connection.RequestTimeout=10000