1

次の ActiveMQ 接続文字列があるとします。

フェールオーバー:(tcp://broker1:61616,tcp://broker2:61616)?randomize=true

この構成を持つJavaプロデューサーからブローカーに数千のリクエストを送信しています。

ときどき、すべてのメッセージが 1 つのブローカーだけに送られ、もう 1 つのブローカーはメッセージを 1 つも受信しないことに気付きました。

これは正常な動作ですか?

10回のテストのうち、私はこの動作に数回気付いたかもしれません. また、両方のブローカーがメッセージを受信した場合もあります。

randomize=true のしくみ

http://activemq.apache.org/failover-transport-reference.htmlで見つけた唯一の説明は、「ランダムなアルゴリズムを使用して、提供されたリストから再接続に使用する URI を選択する」です。

4

1 に答える 1

2

フェールオーバー トランスポートのランダム化フラグは、トランスポートが接続先の構成済みブローカー URI のいずれかをランダムに選択する必要があることを示します (この場合、選択できるのは 2 つです。クライアントがこれらのブローカーの 1 つに接続すると、クライアントは問題なく使用できます。接続され、何かが発生して接続が中断されるまで、そのブローカーにのみメッセージを送信します. 接続が中断されると、クライアントは再びこれら2つのブローカーのいずれかに接続しようとします. したがって、あなたの場合、単一のプロデューサーがすべてのメッセージをに送信しますあるブローカーは、期待どおりに機能することを意味します。

于 2012-09-28T22:41:17.910 に答える