6

2 つのキューは、次のルーティング キーを使用してトピック交換にバインドされます。

ルーティング キー パターン マッチでバインドされたキュー A ルーティング キー パターン マッチ*.foo
でバインドされたキュー B*.bar

fooメッセージでもメッセージでもないメッセージを受信する 3 番目のキューをこの交換に追加したいと思いbarます。このキューを#ルーティング キーにバインドすると、必要なすべてのメッセージが自然に取得されますが、不要な と が含まfoobarます。

NOT *.fooパターンにパッチを当ててメッセージをルーティングする方法はありますNOT *.barか?

4

1 に答える 1

7

どのバインディングにも一致しないすべてのメッセージをキャッチしたい場合は、Alternate Exchangeを使用して実行できます。

既存の代替交換を追加し、その代替交換からすべてのメッセージを収集します。

standard workflow --> [main exchange (topic)]
                    |     --> via binding *.foo -->  [foo queue]
                    |     --> via binding *.bar -->  [bar queue]
                    v      
           [alternate exchange (let it be topic too)]
                    --> via binding * --> []

N 個のバインディングがあり、M 個のバインディング (ここで M < N) に一致しないすべてのメッセージをキャッチしたい場合のより具体的なケースでは、より問題が大きくなりますが、技術的にはDead Letter Exchangeを介して実行し、カスタム エクスチェンジに公開することができます。 M バインディングしかない場合は、Alternate Exchange でケースを適用します。しかし、さびたように聞こえますし、パフォーマンスの低下について考えることさえありません (メッセージ フローが非常に高い場合にのみ適用されます)。

于 2015-02-05T20:04:41.660 に答える