假设我有以下 ActiveMQ 连接字符串:
故障转移:(TCP://Broker1:61616,TCP://broker2:61616)?randomize=true
我从具有此配置的 Java 生产者向代理发送了数千个请求。
有时我注意到所有消息最终只发送到一个代理,而另一个没有收到一条消息。
这是正常行为吗?
在 10 次测试中,我可能已经注意到了几次这种行为。在其他时候,两个经纪人都收到了消息。
随机化=真实如何工作?
我在 http://activemq.apache.org/failover-transport-reference.html 上找到的唯一解释是:"使用随机算法从提供的列表中选择用于重新连接的 URI"
故障转移传输上的随机化标志指示传输应随机选择一个配置的代理 URI 进行连接(在您的情况下,有两个可供选择。 一旦客户端连接到其中一个代理,客户端将保持愉快连接,并仅向该代理发送消息,直到发生中断连接的时间。 一旦连接中断,客户端将再次尝试连接到这两个代理之一。 因此,在您的情况下,单个生产者将其所有消息发送到一个代理意味着,它的工作方式也与预期一样。