2016-11-30 28 views
0

我有兩種同一事件的工人。混合扇出和直接與AMQP交換

我希望將一條消息發送給我的一些工作人員中的一個(比如「直接」交流)。但其他工作人員都應該處理該消息(如扇出)。

這有點難以解釋,但這個想法在這裏。也許下面的模式將幫助你理解我想要的。

Architecture I would like to have

你有一個解決方案嗎?

親切的問候, 本

回答

0

你最好的選擇是使用路由鍵與你交流,你的隊列之間的多個綁定。

我會建議爲此直接或主題交換,但不是扇出。

您例如上圖中的型號,配置是這樣的:

| exchange | routing key | queue | 
|----------|-------------|---------| 
| some.ex | type.1  | queue.1 | 
| some.ex | type.1  | queue.2 | 
| some.ex | type.1  | queue.3 | 
| some.ex | type.2  | queue.4 | 
| some.ex | type.2  | queue.5 | 

基本上,你需要有每個隊列路由鍵,每個工人的隊列。


您可能想了解更多有關交換,隊列和綁定的信息,以便更好地瞭解它們何時使用。我有一些電子書覆蓋了這個(以及其他RMQ使用場景)https://leanpub.com/u/derickbailey

1

如果我正確理解你,你希望有「type-1」作爲工人,其中只有一個工作人員在物品上工作「type-2」可以被視爲多個處理程序(如日誌處理程序),其中所有人都應該接受該事件。

如果我是對的,那麼你可能能夠鏈接兩個隊列(交換)。所有「type-2」(伐木工)將在這裏等待,所以他們都會得到活動 exchange2 - 直接 - 所有的「類型-1」將在這裏等待,所以只有一個會得到事件

這個訣竅 - 你需要確保你有一位消費者在聆聽「exchange1」,也會發布到「exchange2」。

+0

嗨波維林,我其實認爲它回答了這個問題,但我明確表達了你的觀點。謝謝 !! – user7412510