2017-10-05 9 views
0

これは適切な質問ではありませんが、出版/購読メッセージングシステムを実装するためのRabbitMQの機能に関する質問があります。私はそれが私が働いている会社のニーズに合うかどうかを確認するためのRabbitMQを調査しています、と私は、公式ドキュメントや、インターネット上のいずれかにこれらの質問への答えを見つけることができません。RabbitMQを使用して消費者のグループに登録しますか?

  • は、ことは可能です消費者は出版社のグループに加入することができますか?私たちが購読したいグループのすべての出版社が彼らのメッセージを交換所に送って、そのメッセージを購読者に転送するのであれば、それは可能かもしれません。これを実現するためには、どのようなタイプの外殻が最適でしょうか?
  • トピックグループに登録することはできますか?たとえば、data_1、data_2などのように "data"で始まるトピックが複数ある場合、コンシューマに "data *"をサブスクライブすることは可能でしょうか?私はこれで何も見つかりませんでしたが、交換の仕組みについて私が集めたものから、それは可能ではないようです。
  • サブトピックを持つことは可能ですか、さらにはサブサブトピックを含めることは可能ですか? トピックやヘッダーの交換、サブトピック、サブサブトピックの使用は、基本的にはdata.diag.signalなどのルーティングキーの一部になります。

私は自分自身を十分に明確にしたいと思います。私はあなたの答えに事前に感謝します。

答えて

0

私の答えでJava APIの例を使用します。

パブリッシャーのグループに購読することはできますか?

RMQの消費者はサイト運営者に気づいていません。それらの間のエンティティはキュー(およびプロデューサ(パブリッシャ)側からの交換)です。 Java API com.rabbitmq.client.Channel.basicConsume(String, Consumer)では、1つのキューからのみ消費できます。しかし、同じConsumerコールバックを複数のキューに渡すこともできます

コンシューマ単位のキューを作成し、channel.queueBindを使用して、興味深いメッセージを生成するエクスチェンジにバインドします。あるいはもっと簡単に、それらを一般的な交換に公開して、それにバインドさせることもできます。

トピックグループに登録することはできますか?たとえば、data_1、data_2などのように "data"で始まるトピックが複数ある場合、コンシューマに "data *"をサブスクライブすることは可能でしょうか?私はこれで何も見つかりませんでしたが、交換の仕組みについて私が集めたものから、それは可能ではないようです。

キュー名を渡す必要があるため、明示的に指定する必要はありません。 しかし、あなたは交換ルーティングを回避することができますあなたの現在の状態がある場合 :

producer1 -> exchange-data-1 -> queue-data-1 
producer2 -> exchange-data-2 -> queue-data-2 
producer3 -> exchange-data-3 -> queue-data-3 

あなたはまた、

producer1 -> exchange-data-1 --\ 
producer2 -> exchange-data-2 -> exchange-data-all -> queue-per-consumer -> your-consumer 
producer3 -> exchange-data-3 --/ 

新しい交換を設定することができ、サブトピックを持ってすることが可能であり、さらにはサブ・サブ・ソクティクス?私がこれまで理解してきたことから、トピックやヘッダーの交換、サブトピック、サブサブトピックの使用は、基本的にdata.diag.signalのようなルーティングキーの一部になります。

ありRMQにはサブトピックの概念はありませんが、あなたが言及していたとして、あなたは取引所(豊かなデザインのため、あるいはheaderstopicを使用することができます。

+0

あなたの答えをありがとう、それは非常に便利です!トピック交換のワイルドカードについては、A.B. *やA。*。*などのトピックを購読することは可能ですが、A。*。C?などのサブスクリプションは可能ですか? –

関連する問題