現在、RabbitMQ を評価してキューを管理しています。RabbitMQ がメモリ内のキュー アイテムをどのように管理しているのか疑問に思っていました。
このパブリッシャー サブスクライバーの例でhttp://www.rabbitmq.com/tutorials/tutorial-three-python.html
サブスクライバー (コンシューマー) ごとにキューを作成していますか? たとえば、2 つのコンシューマーがある場合、メッセージを保存するためのメモリ使用量を 2 倍にしますか?
キューに複数のワーカーをアタッチすると、各コンシューマーが異なるメッセージを受信する作業キューになるという印象を受けました。
このためにチャットサーバーを構築しているとしましょう。コンシューマごとにキューを作成する必要がありますか? そして、メモリ内のすべてのメッセージは、接続されているユーザーの数で乗算されますか? または、メモリ内に単一のメッセージしかなく、すべてのキューがそのメッセージへのポインターを持っていますか。
トピックメッセージの例でも。http://www.rabbitmq.com/tutorials/tutorial-five-python.html
1kb のメッセージがあるとしましょう。2つのキューに2kbのメモリ使用量がありますか? Q1、Q2 と言うメッセージはすべてのバインディング キーに一致します。
lazy.blue.*
リッスンする別のキューを追加した場合、Q3としましょう。メモリ内に新しいキュー アイテムが作成されますか? データを複製しますか?