Когда сообщение будет удалено из очереди? - PullRequest
0 голосов
/ 20 декабря 2018

Предположим, у нас есть один производитель, одна очередь и несколько потребителей, которые подписаны на очередь.

Producer -> Queue -> Consumers

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

Когда очередь будет стерта?

  1. Когда все потребители получат сообщение?
  2. Или когда один изпотребители подтверждают сообщение с флагом ack (true)?

А как управлять приоритетом, кто из потребителей должен получить сообщение первый / последний (не путать с приоритетом сообщения).

Как пример, у меня есть 10 потребителей, и я хочу, чтобы пятый потребитель сначала получил сообщение, а остальные потребители позже указанного времени.

1 Ответ

0 голосов
/ 20 декабря 2018

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

По вашему приоритетному вопросу не существует встроенного механизма, чтобы потребители получали одно и то же сообщение с понятием приоритета.: приоритет потребителя существует (см. https://www.rabbitmq.com/consumer-priority.html),, но он сделан для того, чтобы потребитель получал данное сообщение раньше других в данной очереди, поэтому другие потребители не будут получать это сообщение. Это необходимо организовать доставкуваши сообщения, вам нужно подумать о более сложной системе (возможно, saga или resequencer ?).

Обратите внимание, что вы можете задерживать сообщения, используя эту pattern . Опять же, это требует наличия нескольких очередей.

Наконец, существует множество сценариев, когда очередь удаляется. Посмотрите документацию, это хорошо объяснено.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...