想知道rabbitmq多個發佈者和消費者的行爲。 rabbitmq服務器一次給任何一個消費者發送一條消息,而其他消費者當時是理想的嗎?rabbitmq多個消費者和多個發佈者
OR
消費者挑選任何無人蔘與消息從隊列中,以便在一個時間,一個以上的消費者正在消耗從隊列中的消息?
基本上我正在設計一個數據庫隊列,並且不希望每次插入多個插入。
想知道rabbitmq多個發佈者和消費者的行爲。 rabbitmq服務器一次給任何一個消費者發送一條消息,而其他消費者當時是理想的嗎?rabbitmq多個消費者和多個發佈者
OR
消費者挑選任何無人蔘與消息從隊列中,以便在一個時間,一個以上的消費者正在消耗從隊列中的消息?
基本上我正在設計一個數據庫隊列,並且不希望每次插入多個插入。
來自隊列的消息將僅傳遞給一位消費者。即:一旦消息進入隊列 - 它不會被複制(廣播)給多個消費者。
如果你想做廣播 - 你必須使用多個隊列。
請參見本教程的詳細信息: http://www.rabbitmq.com/tutorial-two-python.html
是,RabitMQ支持多個出版商和消費者。
多個出版商
發佈一個messsge到rabbitmqyou需要聲明一個工廠,並盡到的RabbitMQ服務器的連接。 然後decare一個chennel到的RabbitMQ
ConnectionFactory FACTORY = new ConnectionFactory
FACTORY.setUsername( 「客戶」)
FACTORY.setPassword( 「客戶」)
FACTORY.setVirtualHost( 「\」)
FACTORY.setPort(5572)
FACTORY.setHost(「localhost」)
連接連接= FACTORY.newConnection 頻道信道= connection.createChannel
基本密鑰將消息路由是路由關鍵
channel.basicPublish(EXCHANGE_NAME, "Queue1", MessageProperties.PERSISTENT_TEXT_PLAIN, "msg1".getBytes)
channel.basicPublish(EXCHANGE_NAME, "Queue2", MessageProperties.PERSISTENT_TEXT_PLAIN, "msg2".getBytes)
這兩個消息將被髮布到一個單獨的隊列作爲每個路由鍵提隊列1和隊列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)
這樣ü可以從第一隊列 消耗消息和這同樣適用於第二隊列,但指定路由密鑰作爲「隊列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)