なぜ必要なのかrouting key
は、メッセージをexchange
からキューにルーティングします。単にキュー名を使用してメッセージをルーティングすることはできません。また、複数のキューにパブリッシュする場合、複数のキュー名を使用できます。ルーティングキーが実際に必要になるシナリオを誰かが指摘できますか?キュー名は十分ではありません。
交換にはいくつかのタイプがあります。 fanout
交換はルーティングキーを無視し、すべてのキューにメッセージを送信します。ただし、他のほとんどすべての交換タイプは、ルーティングキーを使用して、メッセージを受信するキュー(ある場合)を決定します。
RabbitMQ Webサイトのチュートリアル は、さまざまな交換タイプが役立ち、ルーティングキーが関連するいくつかのユースケースを説明しています。
たとえば、 チュートリアル5 は、topic
交換を使用して、各メッセージのログレベルに応じてログメッセージを異なるキューにルーティングする方法を示しています。
複数のキューをターゲットにする場合は、それらをfanout
エクスチェンジにバインドし、パブリッシャーでそのエクスチェンジを使用する必要があります。
パブリッシャーで複数のキュー名を指定することはできません。 AMQPでは、メッセージをキューに公開するのではなく、メッセージをエクスチェンジに公開します。関連するキューを決定するのは交換の責任です。メッセージがまったくキューにルーティングされず、単にドロップされる可能性があります。
キュー名をアプリケーションから分離すると、柔軟性が向上します。
複数のキューを確立して同じメッセージを消費することもできますが、キューに同じ名前を付けることはできません。
場合によっては、メッセージの発信者はキューの名前を知りません。 (サーバーを水平方向にスケーリングするときにランダムに生成されたキュー名がある場合など)
エクスチェンジは、1種類以上のコンシューマにメッセージをルーティングする場合があります。次に、メッセージを関係するコンシューマーにルーティングするために、ルーティングキーにいくつかのワイルドカードが必要になります。