3

RabbitMQ のトピック交換 (ここで説明されているようにhttp://www.rabbitmq.com/tutorials/tutorial-five-python.html )では、ワイルドカード選択のweather.US.newyorkやなどのキーを使用してルーティングできます。受信メッセージのキーでパターン マッチングを行うために内部で使用するアルゴリズムとデータ構造の種類。weather.US.**

キューのバインド キーを格納するために使用するデータ構造は? そして、それを受信ルーティングキーとどのように比較しますか。

4

1 に答える 1

6

RabbitMQ 担当者がトピック ルーティングの方法を詳しく説明しているブログ投稿がいくつかあります。

要約すると、(少なくともバージョン 2.4 の時点では)、次のノードにバインディング キーの各セグメントを格納するツリー データ構造であるトライを使用しているようです。

トライをトラバースするために使用されるアルゴリズムについては明示されていませんが、ワイルドカード選択の * および # に対処するために、トライをバックトラックして、可能なすべての一致をキャプチャする必要があります。ただし、このオーバーヘッドは、特に最も単純なケースでは低くなる可能性があり、上記の 2 番目の記事のベンチマークは、バックトラッキングを回避するために最適化された他のデータ構造よりもトライが高速であることを示しています。

于 2013-07-17T13:15:02.850 に答える