RabbitMQ несколько потребителей подписываются на одну и ту же очередь и получают одно и то же сообщение - PullRequest
1 голос
/ 20 июня 2020

Я считаю, что могут ли несколько потребителей получить «одно и то же» сообщение из «той же» очереди, на которую они подписались?

Это означает, что потребитель_1 и потребитель_2 оба являются очередью подписки_1, когда одно сообщение публикуется sh издателем, могут ли два из этого потребителя получить это сообщение одновременно?

Если да , как я могу это реализовать?

Ответы [ 2 ]

3 голосов
/ 20 июня 2020

Это невозможно. Одно сообщение может быть доставлено одному потребителю очереди за раз. Однако можно направить одно сообщение в несколько очередей через один обмен. Обратитесь к различным формам привязок и обменам , предлагаемым rabbitMQ.

Однако обратите внимание, что rabbitmq предлагает возможность реквизиции и nacks .

0 голосов
/ 20 июня 2020

Это невозможно. Определенное сообщение из очереди не может быть использовано более чем одним потребителем.

Помните, что в AMQP сообщения всегда потребляются из очереди.

  1. Сообщение из очереди потребляется только один потребитель
  2. Вы можете иметь конкурирующих потребителей, разделяющих рабочую нагрузку из очереди

Поток AMQP очень высокого уровня

  1. Производитель публикует сообщение для exchange.
  2. Обмен принимает сообщение и направляет его в очереди (на основе атрибутов сообщения, типа обмена и привязок)
  3. Потребитель обрабатывает сообщение или остается в очереди до тех пор, пока оно не будет отправлено.

Вы получаете разные шаблоны обмена сообщениями в AMQP в зависимости от того, какой тип обмена и привязки вы создаете на шаге 2. Независимо от того, является ли это точка-точка, pub sub, многоадресная передача, это будет основано на том, что происходит на шаге 2.

Хорошая статья с красивыми диаграммами

https://www.cloudamqp.com/blog/2015-09-03-part4-rabbitmq-for-beginners-exchanges-routing-keys-bindings.html#standard -rabbitmq-message-flow

* 103 2 *

enter image description here

enter image description here

...