У нас есть приложение, которое будет использовать RabbitMQ и иметь несколько разных очередей для передачи сообщений между уровнями.
Вначале я планировал использовать несколько прямых обменов, по одному для каждого типа сообщений, но похоже, что один обмен тегами с очередями, использующими разные привязки ключей маршрутизации, достигнет того же.
Наличие единого обмена также похоже на то, что было бы немного легче поддерживать, но мне было интересно, есть ли какая-либо польза (если таковая имеется) в том, чтобы делать это одним способом над другим?
Вариант 1, используя несколько прямых обменов:
ExchangeA (type: direct)
-QueueA
ExchangeB (type: direct)
-QueueB
ExchangeC (type: direct)
-QueueC
Вариант 2, используя единый обмен темами:
Exchange (type: topic)
-QueueA (receives messages from exchange with routing key of "TypeA")
-QueueB (receives messages from exchange with routing key of "TypeB")
-QueueC (receives messages from exchange with routing key of "TypeC")