在我们的应用程序中,Active MQ故障转移URL如下所示:
failover:(tcp://localhost:9125?useInactivityMonitor=false&wireFormat.maxInactivityDuration=0,tcp://localhost:9126?useInactivityMonitor=false&wireFormat.maxInactivityDuration=0)?randomize=true
该应用尝试随机连接其中一个网址,但如果该网址不是主网址,则会等待10秒的超时,然后尝试重新连接到其他网址。 我不确定哪个参数导致这种等待发生。我不想等待。如果网址不是主网址,我希望应用立即重新连接到其他网址。
任何人都可以帮我吗?任何参数变化,提示,建议都欢迎和赞赏。 谢谢。
答案 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 连接永远不会超时。
在这里查看参数说明
答案 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
感谢您的研究和帮助。