AMQP でルーティング マジックを実行したいと思います。私のセットアップは、コンシューマー/プロデューサー側に Pika を使用した Python と AMQP サーバー用の RabbitMQ です。
私が達成したいこと:
- 単一の取引所にメッセージを送信する
- (ここに魔法を入れる)
次のようにメッセージを消費します。
- サブスクライバーの 1 つのセットは、ルーティング キーに基づいて取得できる必要があります。
1 組のサブスクライバーがすべてのメッセージを取得する必要があります。
注意が必要なのは、2 番目のセットのいずれかのサーバーがメッセージを受信した場合、2 番目のセットの他のサーバーはメッセージを受信しないことです。最初のセットのすべてのサーバーは、引き続きこのメッセージを消費できるはずです。
これは単一のbasic_publish
呼び出しで可能ですか、それともメッセージをルーティング交換 (最初のコンシューマー セットの場合)と"グローバル" エクスチェンジ (コンシューマーの 2 番目のセットの場合) に送信する必要がありますか?
説明:
私が達成したいのは、メッセージを発行するための単一の呼び出しであり、2 つの異なるコンシューマー セットによって受信されます。
ケース 1 : ルーティング キーに基づいてメッセージを受信するだけです (つまり、ルーティング キーを含むメッセージは、
foo
現在そのトピックに関心のあるすべてのコンシューマーによって受信されます)。ケース 2 : これは基本的にワーカー キューの RabbitMQ チュートリアルに似ています。ラウンド ロビン方式でディスパッチされたメッセージを受信する多くのワーカーがあります。1 人のワーカーのみがメッセージを受信します
それでも、特定のルーティング キーに関心のあるコンシューマーが受信するメッセージは、単一の API 呼び出しによって生成された、ワーカーが受信するメッセージとまったく同じである必要があります。
(私の質問が理にかなっていることを願っています。私は AMQP の用語にあまり詳しくありません)