複数の出版社および消費者の行動を知りたい。 rabbitmqサーバーは、一度に消費者のいずれかに1つのメッセージを送信しますが、他の消費者はその時点で理想的ですか?rabbitmq複数の消費者および複数の出版社
OR
時に、複数の消費者がキューからメッセージを消費しているように、消費者は、キューから任意の無人のメッセージを選びますか?
基本的に私は、データベースキューを設計していますし、一度に複数の挿入を望んでいません。
複数の出版社および消費者の行動を知りたい。 rabbitmqサーバーは、一度に消費者のいずれかに1つのメッセージを送信しますが、他の消費者はその時点で理想的ですか?rabbitmq複数の消費者および複数の出版社
OR
時に、複数の消費者がキューからメッセージを消費しているように、消費者は、キューから任意の無人のメッセージを選びますか?
基本的に私は、データベースキューを設計していますし、一度に複数の挿入を望んでいません。
キューからのメッセージは、1つのコンシューマにのみ配信されます。つまり、メッセージがキューに入ったら、複数のコンシューマにコピー(ブロードキャスト)されません。
あなたが放送をしたい場合は - あなたが複数のキューを使用する必要があります。 http://www.rabbitmq.com/tutorial-two-python.html
はい、RabitMQは、複数の出版社と消費者をサポートしています。
は、より多くの詳細については、このチュートリアルを参照してください。rabbitmqyouが工場を宣言する必要があるとのRabbitMQサーバへの接続を行うためのmesssgeを公開するための複数の出版社
。 はその後
ConnectionFactory FACTORY = new ConnectionFactory
FACTORY.setUsername( "ゲスト")
FACTORY.setPassword( "ゲスト")
FACTORY.setVirtualHost( "\")
をRabbitMQのためにchennelをdecare FACTORY.setPort(5572)
FACTORY.setHost( "localhost")
接続の接続= FACTORY.newConnection チャンネルチャンネル= connection.createChannel
ルートへの基本的なキーメッセージは、これら2つのメッセージのように別々のキューに公開されますルーティングキー
channel.basicPublish(EXCHANGE_NAME, "Queue1", MessageProperties.PERSISTENT_TEXT_PLAIN, "msg1".getBytes)
channel.basicPublish(EXCHANGE_NAME, "Queue2", MessageProperties.PERSISTENT_TEXT_PLAIN, "msg2".getBytes)
ですマルチのための言及のQUEUE1とキュー2
2.Multiple消費者
としてルーティングキーあたり私たちはキューを宣言し、特定のルーティングキーにバインドします そのルーティングキーへのメッセージは、尊重されたキューにパブリッシュされます。このような
channel.exchangeDeclare(EXCHANGE_NAME, "direct", durable)
channel.queueDeclare("q1", durable, false, false, null)
channel queueBind ("q1", EXCHANGE_NAME,"queue1")// routing key = "queue1"
val q1Consumer = new QueueingConsumer(channel)
channel basicConsume ("q1", false, q1Consumer)
uが最初のキュー からのメッセージを消費することができるし、同じことが2番目のキューのために行くが、「キュー2」
channel.exchangeDeclare(EXCHANGE_NAME, "direct", durable)
channel.queueDeclare("q2", durable, false, false, null)
channel queueBind ("q2", EXCHANGE_NAME,"queue2") // routing key = "queue2"
val q2Consumer = new QueueingConsumer(channel)
channel basicConsume ("q2", false, q2Consumer)
などのルーティングキーを指定します