2010-12-05 2 views
0

Хотите знать поведение многоразового издателя и потребителя rabbitmq. Сервер rabbitmq дает сообщение одному из потребителей в то время, а другие потребители являются идеальными в то время?rabbitmq несколько потребителей и несколько издателей

ИЛИ

Потребителей выбрать любое автоматическое сообщение из очереди, так что в то время, более чем потребители потребляют сообщение из очереди?

В основном я проектирую очередь базы данных и не хочу больше, чем одна вставка за раз.

ответ

0

Сообщение от очереди будет доставлено только одному потребителю. Т.е.: как только сообщение пробивается в очередь - оно не будет скопировано (передано) нескольким потребителям.

Если вы хотите сделать трансляцию - вам нужно использовать несколько очередей.

Смотрите этот учебник для более подробной информации: http://www.rabbitmq.com/tutorial-two-python.html

-1

да, RabitMQ поддерживает несколько издателей и потребителей.

  1. Multiple Издательство

    Для публикации messsge в rabbitmqyou необходимо объявить фабрику и сделать подключение к серверу RabbitMQ. затем арам в chennel к RabbitMQ

    ConnectionFactory FACTORY = new ConnectionFactory 
    

    FACTORY.setUsername ("гость")

    FACTORY.setPassword ("гость")

    FACTORY.setVirtualHost ("\")

    FACTORY.setPort (5572)

    FACTORY.setHost ("локальный")

    соединения Соединения = FACTORY.newConnection канала Channel = connection.createChannel

основной ключ маршрутизировать сообщением является маршрутизация ключа

channel.basicPublish(EXCHANGE_NAME, "Queue1", MessageProperties.PERSISTENT_TEXT_PLAIN, "msg1".getBytes) 

channel.basicPublish(EXCHANGE_NAME, "Queue2", MessageProperties.PERSISTENT_TEXT_PLAIN, "msg2".getBytes) 

этих двух сообщений будет опубликован в отдельную очередь, как за ключ маршрутизации, как упоминание queue1 и queue2

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) 

как это и может получать сообщения из первой очереди и то же самое для второй очереди, но указать ключ маршрутизации как «queue2»

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) 
Смежные вопросы