10

私は現在、メッセージ キュー システムを評価しており、RabbitMq が良い候補のように思われるので、もう少し掘り下げています。

少しコンテキストを与えるために、複数のキューに発行するメッセージを負荷分散する 1 つの交換のようなものを探しています。メッセージを複製したくないので、ファンアウト交換はオプションではありません。

また、消費者とのラウンドロビンを処理する 1 つのキューに対して複数のキューを使用することを考えている理由は、単一障害点をキュー レベルにしたくないからです。

パブリッシャー側にロジックを追加して、ルーティング キーを編集し、適切なバインディングを配置することで、その動作をシミュレートできるように思えます。しかし、これは、各キューでのメッセージ消費のペースを考慮しない一種の受動的なアプローチであり、そのキューのコンシューマ アプリケーションが停止した場合、1 つのキューがいっぱいになる可能性があります。

私は交換エンティティ側からより積極的な方法を探していました。それは、各キュー サイズまたはその性質に基づいて次のメッセージをどこに送信するかを決定します。

Alice と利用可能な RESTful API について読んだことがありますが、これは高速なルーティング決定を実装するための非常に重要なソリューションのように思えます。

交換キュー間のラウンドロビンがRabbitMQで実現可能かどうかは誰にもわかりますか? ありがとう。

4

3 に答える 3

4

AMQPモデルでは、交換は一般にステートレスですが、RabbitMQプラグインを管理するためのシステムと、新しい実験的な交換タイプを提供するためのシステムの両方が存在するようになったため、ステートフル交換で最近いくつかの実験が行われました。

要件を完全に理解しているとは言えませんが、あなたが望んでいることを完全に実行するものは何もないと思います。単一障害点を除いて、そこから読み取るワーカーを含む単一のキューを持つことで、問題は解決しますか?その場合、問題は、そのソリューションの使用を許可するHA構成でRabbitMQを構成することになります。これを行うには、いくつかのアプローチがあります。HALinuxと共有ストアを使用してアクティブ/パッシブHAを迅速にフェイルオーバーするか、複数の並列ブローカーをセットアップしてクライアントで重複排除します。おそらく、redisなどを使用します。

さらに多くの人が提案を提供できる場所であり、後世のために議論をアーカイブできる場所である、rabbitmq-discussメーリングリストでもう一度質問することをお勧めします。

于 2010-04-12T23:56:44.230 に答える
1

アプローチについてトニーに同意します。

これは、RabbitMQ の「マッシュアップ」です。Redis を自分で作成する代わりに使用できます - http://xing.github.com/beetle/

于 2010-04-15T04:29:00.590 に答える