1

このシナリオを実装する必要があります:
外部アプリケーションが rabbitmq にメッセージを発行します。このメッセージには client_id プロパティがあります。この ID をルーティング キーまたはメッセージ ヘッダーまたはその他のプロパティに配置できます。
交換ルーティング ロジックにシャーディングを実装する必要があります。メッセージは、client_id の範囲に基づいて特定のキューに配信する必要があります。

標準取引所に実装することは可能ですか?
そうでない場合、どの取引所をベースにするべきですか?
client_id の範囲を動的に変更する方法は?

4

3 に答える 3

2

rabbitmq プラグインを見てください。v3.6.0 以降の RabbitMQ ディストリビューションに含まれています。

于 2014-05-22T16:45:40.120 に答える
0

AMQP にはシャーディングの明示的な実装はありませんが、そのアーキテクチャはそれを行うのに役立ちます。

メッセージを複数のキューに分散することは、rabbitmq の課題 (および amqp 仕様の一部) に過ぎず、ルーティングを使用すると、異種のコンシューマーをアタッチして、同じ交換を介してルーティングされる特定のメッセージを処理できます。したがって、プロデューサーは、特定のキュー/コンシューマーによって消費される特定のキーをプッシュする必要があります...

静的シャーディングを作成することを決定できます。おそらく、キューごとに 1 つのコンシューマーを持つ 10 個のキューがあるとします。キーが CLIENT_ID % 10 になるように、一貫したハッシュ関数を実装できます。

別の方法と静的な解決策は提案できず、このアーキテクチャを試してみることができます。

于 2012-09-12T15:36:02.447 に答える
0

プロデューサーにルーティング キーに十分な情報を入力してもらい、メッセージが Exchange の反対側の正しいキューに送られるようにします。

たとえば、1 と 2 という名前の 2 つのキューを作成し、それらを名前に一致するルーティング キーでバインドします。次に、プロデューサーに、イベント メッセージの生成時に使用するルーティング キーを決定してもらいます。am で始まる名前のお客様は 1 に、nz は 2 に進みます。シャーディングをプロデューサーにプッシュしますが、アプリケーションにとっては問題ない場合があります。

于 2012-09-12T03:51:06.357 に答える