【问题标题】:ActiveMQ and randomizeActiveMQ 和随机化
【发布时间】:2012-09-20 19:39:48
【问题描述】:

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

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

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

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

这是正常行为吗?

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

randomize=true 的工作原理是什么?

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

【问题讨论】:

    标签: activemq broker


    【解决方案1】:

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

    【讨论】:

    • 感谢@Tim Bish 的快速回复。有没有办法将负载分配给两个经纪人,这样一个经纪人就不会全部接受?我认为您提到的“randomize = true”只要没有中断或连接问题,客户端就会使用它连接到的代理。
    • 查看 Apache Camel,特别是负载均衡器。 camel.apache.org/load-balancer.html
    猜你喜欢
    • 2023-03-10
    • 2021-06-11
    • 2013-07-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多