2010-12-05 18 views
0

複数の出版社および消費者の行動を知りたい。 rabbitmqサーバーは、一度に消費者のいずれかに1つのメッセージを送信しますが、他の消費者はその時点で理想的ですか?rabbitmq複数の消費者および複数の出版社

OR

時に、複数の消費者がキューからメッセージを消費しているように、消費者は、キューから任意の無人のメッセージを選びますか?

基本的に私は、データベースキューを設計していますし、一度に複数の挿入を望んでいません。

答えて

0

キューからのメッセージは、1つのコンシューマにのみ配信されます。つまり、メッセージがキューに入ったら、複数のコンシューマにコピー(ブロードキャスト)されません。

あなたが放送をしたい場合は - あなたが複数のキューを使用する必要があります。 http://www.rabbitmq.com/tutorial-two-python.html

-1

はい、RabitMQは、複数の出版社と消費者をサポートしています。

は、より多くの詳細については、このチュートリアルを参照してください。

  1. 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) 
などのルーティングキーを指定します
関連する問題