Некоторые важные вопросы об использовании RabbitMQ? - PullRequest
0 голосов
/ 19 декабря 2018

После прочтения документации о том, что такое Кролик и что делает, у меня есть несколько общих вопросов:

Случай: Производитель отправляет одно сообщение некоторым потребителям (подписчикам).

Мне нужно краткое объяснение для всех пунктов списка ниже, что использовать и что копать дальше.

  1. Как очистить очередь и прекратить отправку сообщения потребителям после определенного времени / даты ?
  2. Могу ли я включить в подтвержденные данные пользователя сообщения, такие как JSON?
  3. Где хранятся эти данные?В той же очереди?
  4. Как отфильтровать подтвержденные сообщения и затем очистить очередь?
  5. Как очистить очередь после определенного времени / даты?
  6. Что произойдет, если не один потребитель не подтверждает сообщение , как долго они хранятся?
  7. Подписывает ли потребитель очередь или может также подписаться на обмен?
  8. Используя модель один ко многим для отправки сообщения, как установить, кто должен получать сообщение первым / последним или одновременно, здесь описано, что , но не ясно, это на клиентеили на стороне сервера?
  9. Если нет потребителей, как повторно отправить сообщение в другую очередь и закрыть текущую?
  10. Каждый потребитель имеет собственную очередь?

Заранее спасибо и любой комментарий к этому вопросу!

1 Ответ

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

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

1 - Пока потребитель жив, rabbitmq отправляет входящие сообщения потребителю.Вы можете назначить TTL сообщениям / очередям, если хотите, чтобы срок их действия истек через некоторое время.https://www.rabbitmq.com/ttl.html

2 - Что вы имеете в виду?

3 - Rabbitmq сохраняет данные в базе данных mnesia.https://www.rabbitmq.com/persistence-conf.html https://www.rabbitmq.com/relocate.html

4 - Что вы подразумеваете под фильтрацией сообщений и очисткой очереди?Успешно использованные сообщения удаляются из очереди немедленно.

5 - Вы можете задать ttl для очереди или объявить очередь как автоматическое удаление https://www.rabbitmq.com/ttl.html https://www.rabbitmq.com/queues.html

6 - Если потребители неПри отправке подтверждения кролику сообщения остаются не распакованными до тех пор, пока память не заполнится или кролик не будет доступен

7 - Оба.Потребитель может создать свою собственную очередь и связать ее с обменом, либо он может использовать существующую очередь.Это зависит от варианта использования.

8 - Трудно ответить на это, не зная деталей того, что вы подразумеваете под один-ко-многим .Прямой обмен или разветвление или whatelse, сколько очередей и т. Д.

Но в rabbitmq сообщения, упорядоченные по порядку публикации по умолчанию.

В соответствии с вашей общей ссылкой, rabbitmq отправляет сообщения в первую очередь с более высоким приоритетомпотребителям до тех пор, пока счетчик предварительной выборки потребителя (не распаковывает сообщения для потребителя) не станет его пределом.

9 - вам нужно обработать этот случай в кодеИли вы можете использовать интерфейс управления с плагином Shovel.

https://www.rabbitmq.com/management.html https://www.rabbitmq.com/shovel.html

10 - Опять же, это зависит от конструкции и варианта использования.

...