我的Linux机器上有一个ActiveMQ代理,还有一个独立的Java应用程序,它充当在我的Windows机器上运行的生产者。 Windows和Linux计算机都使用相同版本的Java 7。
我将我的经纪人网址指定为:
failover://(tcp://10.0.112.49:61616)?timeout=1000&warnAfterReconnectAttempts=1&maxReconnectAttempts=0`
Windows方案: 我启动我的应用程序,它自动连接到ActiveMQ代理。当我停止代理时,FailoverTransport会尝试每秒重新连接。
2015-07-16 15:14:52,737错误[ActiveMQ Task-1] (FailoverTransport.java:1099)CSN:无法连接 [tcp://10.0.112.49:61616]之后:1次尝试
这是预期的行为。
但是,当我在Linux上运行应用程序时,不是每秒都尝试重新连接,而是每5-10毫秒重新连接一次!我想知道为什么行为不同。
答案 0 :(得分:1)
您的问题是您不了解timeout
选项。这是documentation所说的
超时
在不中断重新连接过程的情况下启用发送操作超时(以毫秒为单位)
然而在Configuring ActiveMQ-CPP我觉得它描述得更好(但仍然相同)。
超时
如果发送被阻止等待失败的连接重新连接方式 它应该在发送失败之前等待,默认是永远(-1)。
如果我了解您,您需要的选项是initialReconnectDelay
,maxReconnectDelay
和useExponentialBackOff
。
另见: