3
兩個隊列綁定到具有下列路由密鑰的主題交換:路由消息不匹配的圖案
隊列A,與路由關鍵圖案匹配*.foo
隊列乙束縛,綁定路由鍵模式匹配*.bar
我想添加第三個隊列到此交換接收消息既不foo
消息也bar
消息。如果我用#
路由密鑰綁定這個隊列,我自然會得到我需要的所有消息,但包括我不想要的foo
和bar
。
任何路由消息修補模式NOT *.foo
和NOT *.bar
?
兩個隊列綁定到具有下列路由密鑰的主題交換:路由消息不匹配的圖案
隊列A,與路由關鍵圖案匹配*.foo
隊列乙束縛,綁定路由鍵模式匹配*.bar
我想添加第三個隊列到此交換接收消息既不foo
消息也bar
消息。如果我用#
路由密鑰綁定這個隊列,我自然會得到我需要的所有消息,但包括我不想要的foo
和bar
。
任何路由消息修補模式NOT *.foo
和NOT *.bar
?
如果要捕獲所有不匹配任何綁定的郵件,可以使用Alternate Exchange完成。
從備用交流添加存在一個替代的交流,並收集所有消息:
standard workflow --> [main exchange (topic)]
| --> via binding *.foo --> [foo queue]
| --> via binding *.bar --> [bar queue]
v
[alternate exchange (let it be topic too)]
--> via binding * --> []
對於更具體的情況下,當你有N個綁定,但你想趕上那不符合中號綁定的所有消息(其中M < N)它更成問題,但技術上可以通過Dead Letter Exchange完成,然後將其發佈到只有M個綁定的自定義交換,然後將其應用於Alternate Exchange。但它甚至聽起來很生疏,甚至沒有考慮到性能下降(只有在消息流量非常高的情況下才適用)。
我建議*不要*使用AE,因爲添加一個新的綁定(即觀察者'#')將阻止AE/fallback工作。這是在現實生活中可能發生的事情,並且讓事物側身*真正*快速地發生意想不到的相互作用。 – user2864740 2017-02-06 21:33:56