2

クラスターとして接続された 2 つの Rabbitmq ノード (キューのレプリケーションなし) があり、4 つのワーカーがあり、すべてが同じキュー "myqueue" にバインドされています。今、手動でそのキューにメッセージを発行します (パブリッシャーは Rabbit のいずれかに接続できます)。ノード .. 結果には影響しません)。

今、これが起こります: そのキューにメッセージをパブリッシュするたびに、コンシューマーまたはパブリッシャーがどのノードに接続されているかに関係なく、ラウンドロビン方式でワーカー/コンシューマーに配信されたメッセージを見つけます。同じ結果です。

これはRabbitmqの「prefetch_count」の影響だと言われたのですが、それがどうしてなのか、というか、それが正しいかどうかもわかりません。

4

1 に答える 1

1

rabbitmq は正しく動作していると思います。ワーカーがキューをリッスンしている場合、rabbitmq はラウンド ロビン方式でメッセージをコンシューマーに配信します。

参照: http://www.rabbitmq.com/tutorials/tutorial-two-python.html

デフォルトでは、RabbitMQ は各メッセージを次のコンシューマーに順番に送信します。平均して、すべてのコンシューマーは同じ数のメッセージを受け取ります。メッセージを配布するこの方法は、ラウンドロビンと呼ばれます。3 つ以上のワーカーでこれを試してください。

于 2013-12-07T03:51:17.180 に答える