RabbitMQ - Почему мои ключи маршрутизации игнорируются при использовании обмена темами - PullRequest
0 голосов
/ 22 октября 2018

Я использую RabbitMQ для координации событий между коллекциями служб следующим образом:

Диспетчер пользователей

  • испускает user.collect, когда он хочет, чтобы пользовательские данные собирались изотдельный сервис
  • прослушивает user.collected, который испускается отдельным сервисом

User Collector

  • прослушивает user.collect, когда предполагаетсясобирать некоторые пользовательские данные, и
  • испускает user.collected при сборе данных.

Существуют также другие службы, которые прослушивают такие события, как

  • user.created,
  • user.updated,
  • user.deleted

Кроме того, существуют службы, которые прослушивают более общие события, такие как

  • #.created
  • user.#

и т. Д.

Поэтому я использую topic обмен.

Моя установка выглядит следующим образом:

| exchange | type  | queue           | routingKey     |
| -------- | ----- | --------------- | -------------- |
| MY_APP   | topic | USER_COLLECTION | user.collect   |
| MY_APP   | topic | USER_COLLECTION | user.collected |

Все службы взаимодействуют с биржей, называемой MY_APP.

. Диспетчер пользователей создает производителя, который генерирует событие user.collect.на MY_APP обмен с routingKey user.collect, и он создает получателя, который прослушивает в очереди USER_COLLECTION события с routingKey user.collected.

Пользовательский сборщик создает источника, который испускаетuser.collected событие для обмена MY_APP с routingKey user.collected, и оно создает получателя, который прослушивает в очереди USER_COLLECTION события с routingKey user.collect.

Однако я обнаружил, что пользовательДиспетчер испускает user.collect, и диспетчер пользователей подхватывает его для прослушивателя user.collected.

Это так, как будто routingKey игнорируется.Что я делаю не так?

Обновление

См. Контрольный вопрос

1 Ответ

0 голосов
/ 23 октября 2018

Создание разных очередей для каждого получателя и привязка очередей к теме обмена с использованием соответствующего ключа привязки user.collect или user.collected.

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

Проверьте эту ссылку для получения более подробных примеров.https://www.rabbitmq.com/tutorials/tutorial-five-python.html

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