Какой-то существенный вопрос об использовании RabbitMQ?

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

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

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

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

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

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
0
42
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

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

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

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

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

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

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

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

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

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

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

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

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

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

6- или если канал, на который было доставлено сообщение, закрыт.

cdelmas 19.12.2018 12:55

Другие вопросы по теме