与Windows

时间:2015-07-16 22:40:04

标签: java linux activemq

我的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毫秒重新连接一次!我想知道为什么行为不同。

1 个答案:

答案 0 :(得分:1)

您的问题是您不了解timeout选项。这是documentation所说的

  

超时

     

在不中断重新连接过程的情况下启用发送操作超时(以毫秒为单位)

然而在Configuring ActiveMQ-CPP我觉得它描述得更好(但仍然相同)。

  

超时

     

如果发送被阻止等待失败的连接重新连接方式   它应该在发送失败之前等待,默认是永远(-1)。

如果我了解您,您需要的选项是initialReconnectDelaymaxReconnectDelayuseExponentialBackOff

另见:

  1. How do I configure automatic reconnection
  2. How can I support auto reconnection
  3. using activemq failover URI for reconnecting, while timeout on first connection