У нас есть приложение, которое будет использовать 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")