2012-02-06 3 views
4

私はRabbitMQ in Actionの本を読んでいますが、2章では読んでいますが、著者は私に困惑を言っています。交換をセットアップしてメッセージを送信すると、2人のユーザがキューを聞いています。最初のメッセージが到着すると、最初の加入者がそれを取得し、それが確認されるとメッセージが削除されます。次のメッセージが到着すると、ラウンドロビン方式で次のリスナーに送られます。私は、メッセージを送信している場合は、すべての購読者にメッセージを送信したいと考えました。私の理解は間違っていますか?キューをセットアップする方法は、すべてのユーザがメッセージを受け取る方法 - Rabbit MQ

+0

これを見て、http://www.rabbitmq.com/tutorials/tutorial-three-java.html – nylund

答えて

6

これは簡単です。すべてのサブスクライバーがメッセージのコピーを取得するようにするには、ワイルドカードバインディングを使用して複数のキューを作成します。

トピック交換があり、すべてのメッセージをfred.interestingやfred.boringのようなルーティングキーで公開すると仮定すると、各サブスクライバがバインディングキーfred。*を持つキューを宣言すると、各キューはすべてのメッセージのコピーを入手してください。唯一の問題はキューに名前を付ける方法ですが、必要に応じてRabbitMQで独自の名前を生成できます。

私がこれを行っていた場合、メッセージ消費者プロセスを開始して監視する管理者プロセスが必要になります。スーパーバイザは、各消費者プロセスにfred0001、fred0002のようなキュー名を割り当て、どの名前が有効であるかを追跡します。このように指定された名前を使用すると、管理ツールを使用したり、管理スクリプトと監視スクリプトを書きやすくなります。

+0

自分のキューを登録する責任を個々に負うように加入者を設定します適切なルーティングキーを使用します。自己削除キューとしてそれらを設定すると、消費者の接続が失われるとキューも破棄されます。 –

関連する問題