我們有一個應用程序將使用RabbitMQ,並有幾個不同的隊列用於在層之間傳遞消息。主題交換與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")
我同意。使用適當的路由密鑰的多個隊列更容易管理。想到選項1的唯一優點是可以在單獨的硬件上託管多個交換機,從而實現垂直縮放。但是,如果你的硬件很不穩定,那麼你可能永遠都不需要採用這條路線。 – 2012-03-14 22:03:01
我認爲使用Topic的好處在於,如果將來您需要將相同的消息發送到交換中的多個隊列,那麼您的選項2會更可取。 – gigi2 2014-04-03 18:02:38