有线格式协商超时:对等方没有发送他的有线格式

时间:2018-03-09 10:20:14

标签: activemq

在我们的应用程序中,Active MQ故障转移URL如下所示:

failover:(tcp://localhost:9125?useInactivityMonitor=false&wireFormat.maxInactivityDuration=0,tcp://localhost:9126?useInactivityMonitor=false&wireFormat.maxInactivityDuration=0)?randomize=true

该应用尝试随机连接其中一个网址,但如果该网址不是主网址,则会等待10秒的超时,然后尝试重新连接到其他网址。 我不确定哪个参数导致这种等待发生。我不想等待。如果网址不是主网址,我希望应用立即重新连接到其他网址。

任何人都可以帮我吗?任何参数变化,提示,建议都欢迎和赞赏。 谢谢。

2 个答案:

答案 0 :(得分:1)

如果您设置wireFormat.maxInactivityDuration=0 - > 当设置为值

  

maxInactivityDuration :超时(以毫秒为单位),之后连接被关闭   经纪人,如果没有收到数据。

maxInactivityDurationInitalDelay开始不活动检查前的初始延迟。默认= 10s。

wireFormat.maxInactivityDuration=1000 表示1秒后如果没有收到数据,经纪人将关闭连接!! ??这是一个好主意吗?

尝试:

failover:(tcp://localhost:9125?useInactivityMonitor=true&wireFormat.maxInactivityDuration=1000& wireFormat.maxInactivityDurationInitalDelay=10&initialReconnectDelay=10&maxReconnectAttempts=0&timeout=1000,tcp://localhost:9126?useInactivityMonitor=true&wireFormat.maxInactivityDuration=1000& wireFormat.maxInactivityDurationInitalDelay=10&initialReconnectDelay=10&maxReconnectAttempts=0&timeout=1000)?randomize=true
  

备注

     

在故障转移传输下,默认情况下,发送操作将   当代理变得不可用时无限期地阻塞。那里有两个   可用于处理此方案的选项。首先,要么设置一个   TransportListener直接在ActiveMQConnectionFactory上,这样   它在任何可能需要网络跳跃的请求之前就已到位   第二步,设置超时选项。超时选项会导致当前   在指定的超时后发送操作失败。

     

示例:

     

故障切换:(TCP://主:61616)超时= 3000

您已通过transport.useInactivityMonitor = false

禁用了InactivityMonitor
  

值false会完全禁用InactivityMonitor   连接永远不会超时。

在这里查看参数说明

http://activemq.apache.org/activemq-inactivitymonitor.html#ActiveMQInactivityMonitor-AdvancedInactivityMonitorConfiguration

http://activemq.apache.org/failover-transport-reference.html#FailoverTransportReference-TransportOptions

答案 1 :(得分:0)

在tcp url中尝试了不同参数的组合之后,最终对我有用的是:maxInactivityDurationInitalDelay = 100。 如上面的Hassen所述,maxInactivityDurationInitalDelay的默认值是10秒。而我并没有压倒这一点。

最终网址:

failover:(tcp://localhost:9125?useInactivityMonitor=false&wireFormat.maxInactivityDuration=0&wireFormat.maxInactivityDurationInitalDelay=100,tcp://localhost:9126?useInactivityMonitor=false&wireFormat.maxInactivityDuration=0&wireFormat.maxInactivityDurationInitalDelay=100)?randomize=true

感谢您的研究和帮助。