rabbitMQ學習筆記(五)——通配符模式

介紹


在這裏插入圖片描述
Topics和Routing的基本原理相同,即:生產者將消息發給交換機,交換機根據routingKey將消息轉發給與routingKey匹配的隊列。
不同之處是: routingKey的匹配方式, Routing模式是相等匹配, topics模式是統配符匹配。

符號# :匹配一個或者多個詞(每個詞中間以.分隔),比如inform. # 可以匹配inform.sms、inform.email、inform.email.sms。

符號* :只能匹配一一個詞, 比如inform.* 可以匹配inform.sms、inform.email

實現過程十分簡單,這裏講一下通配符的使用場景:
假設一個網站註冊業務,當用戶註冊成功時,網站需要向用戶發送消息提示註冊成功,有三種方式分別發給三種用戶。
第一種:僅發送手機短信給用戶提示註冊成功。
第二種:僅發送郵箱給用戶提示註冊成功。
每一種方式分別對應一個隊列。而每個隊列又有相應的消費者消費。

而通配符方式意義就在於通過消息發送方的routingKey,就可以選擇一個或者多個隊列進行發送。(注意:路由模式僅能選擇一個,通配符方式可選擇多個)

回到上面的例子。
第一種的routingKey設置爲:inform. #. email. #。
第一種的routingKey設置爲:inform. #. SMS. #。
此時發送方發送消息的routingKey爲inform.email時,表明要通過email提示,匹配到第一種方式的routingKey(#可爲空)。則消息會送到第一種方式的隊列中。
若消息發送方的routingKey爲inform.SMS時,表明要通過SMS提示,匹配到第二種方式的routingKey。則消息會送到第二種方式的隊列中。
若消息發送方的routingKey爲inform.email.SMS時,表明要通過email和SMS提示,兩種方式的routingKey都能匹配到。則消息會送到第一種、第二種方式的隊列中。


實現


實現不多說,在申明交換機時選擇Topics模式,並且在綁定通道時routingKey寫成通配符,最後在發送消息處寫具體的routingKey。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章