0

RabbitMQ トピック交換を使用して、次のシナリオを達成することは可能ですか。

2 つのキューがあるとします。

Queue1: ルーティング キー MainRoute.Route1

Queue2: ルーティング キー MainRoute.Route2

ルーティング キーを使用してメッセージを公開すると、次のようになります。

MainRoute.Route1 -> Queue1

MainRoute.Route2 -> Queue2

MainRoute -> Queue1 および Queue2

特別なフィルタリング、ルーティングプロセスを実装せずにこれを達成することは可能ですか?

そうでない場合は、問題の可能な解決策についてアドバイスしてください。

ありがとうございました。

4

1 に答える 1

0

これは、直接交換またはトピック交換で行うことができ、交換には 4 つのバインディングが必要です。

例として「MainEx」という名前の交換を想定すると、ルーティング キーは次のように設定されます。

| | 交換 | バインディング | 待ち行列 |
| | -------- | ---------------- | ------ |
| | メインエックス | MainRoute.Route1 | キュー 1 |
| | メインエックス | MainRoute.Route2 | キュー 2 |
| | メインエックス | メインルート | キュー 1 |
| | メインエックス | メインルート | キュー 2 |

トピック交換では、フラグを使用して複数のメッセージを 1 つのキューに送信できます。たとえば、「MainRoute.#」を「Queue3」にバインドすると、すべてのMainRoute メッセージが Queue3 に送信されます。

しかし、単一のバインディングでその逆を行う方法はありません。必要なことを行うには、複数のバインディングを作成する必要があります。

于 2015-08-24T18:22:49.453 に答える