Должен ли я создать некоторые биржи Rabbit MQ? - PullRequest
0 голосов
/ 01 января 2019

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

Итак, производитель отправляет сообщение для страныСША, это означает, что подписавшиеся пользователи в США должны получить это сообщение.Как тип разветвления.

Я думал об архитектуре транспортных сообщений в брокере Rabbit MQ.

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

Вместо этого я предполагаю разместить один обмен с именем страны, связанный с некоторыми очередями, одну очередь для одной страны.

Затем на стороне клиента я определяю, на какойочереди, на которые подписаны пользователи (Страны).

Продолжение :

Что если есть города, назначенные странам, и пользователь также подписывается на города страны?

Должен ли я создать еще один обмен cities и прослушивать сообщения из очереди?Могу ли я отправить сообщение из страновой биржи напрямую в городскую биржу?

Схема для одной страны и некоторых городов:

Producer -> CountryExhange(USA) -> 
CityExchange(Washington) -> Queue (Washington) -> 
Consumes (USA, Washington)

1 Ответ

0 голосов
/ 01 января 2019

Как правило, маршрутизация сообщений зависит от типа обрабатываемого сообщения.Таким образом, если каждая страна имеет свой собственный тип сообщения, то непременно создайте одну очередь на страну.В противном случае, пусть получатели сообщений будут обрабатывать специфическую для страны логику.

Edit:

Вопрос состоит в том, следует ли создавать дополнительные обмены.Следует отметить, что задача обмена состоит в том, чтобы маршрутизировать каждое опубликованное сообщение в одну или несколько очередей.Стандартные типы обмена: прямые, тематические и разветвленные.Эти обмены существуют по умолчанию на недавно настроенном сервере RabbitMQ.Поэтому, если не требуется дополнительный тип обмена, очень мало случаев, когда добавление другого обмена имеет какой-либо смысл.

...