问题描述
我的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:1次尝试后无法连接到[tcp://10.0.112.49:61616]
这是预期的行为。
但是,当我在Linux上运行该应用程序时,它不是每秒钟重新连接一次,而是每5-10毫秒重新连接一次! 我想知道为什么行为不同。
1楼
您的问题是您不了解timeout
选项。
这是说的
暂停
启用发送操作超时(以毫秒为单位),而不会中断重新连接过程
但是,在我认为它描述得更好(但仍然相同)。
暂停
如果发送被阻止等待失败的连接以重新连接,则发送失败之前应等待多长时间,默认值为永远(-1)。
如果我了解您,则所需的选项是initialReconnectDelay
, maxReconnectDelay
和useExponentialBackOff
。
也可以看看: