1

假设我有以下 ActiveMQ 连接字符串:

故障转移:(tcp://broker1:61616,tcp://broker2:61616)?randomize=true

我正在从具有此配置的 Java 生产者向代理发送数千个请求。

有时我注意到所有消息最终只发送到一个代理,而另一个没有收到一条消息。

这是正常行为吗?

在 10 次测试中,我可能已经注意到这种行为几次。在其他时候,两个经纪人都收到了消息。

randomize=true 是如何工作的?

我在http://activemq.apache.org/failover-transport-reference.html上找到的唯一解释是:“使用随机算法从提供的列表中选择用于重新连接的 URI”

4

1 回答 1

2

故障转移传输上的 randomize 标志表示传输应该随机选择一个配置的代理 URI 来连接(在您的情况下,有两个可供选择。一旦客户端连接到这些代理之一,客户端将保持愉快已连接并仅向该代理发送消息,直到发生某些事情中断连接。一旦连接中断,客户端将再次尝试连接到这两个代理之一。因此,在您的情况下,单个生产者将其所有消息发送到一位经纪人的意思是,它的工作方式也像预期的那样。

于 2012-09-28T22:41:17.910 回答