日本免费高清视频-国产福利视频导航-黄色在线播放国产-天天操天天操天天操天天操|www.shdianci.com

學無先后,達者為師

網站首頁 編程語言 正文

消息交換模式RabbitMQ簡介_其它綜合

作者:天方 ? 更新時間: 2022-08-25 編程語言

RabbitMQ是AMQP的一個典型實現,它消息發布者的消息發布到Exchange上,同時需要制定routingkey,可以通過指定交換機的不同模式實現不同的行為。

RabbitMQ提供了四種Exchange:fanout,direct,topic和header。其中header模式在實際使用中較少,本文只對前三種模式進行比較。

Direct模式(點對點通訊):

Direct Exchange是RabbitMQ默認的交換機模式,也是最簡單的模式,根據key全文匹配去尋找隊列。規則如下:

發布到exchange的消息通過routingkey的完全匹配發布到queue上。如果routingkey不存在,則丟棄

點對點方式是最為傳統和常見的通訊方式,它支持一對一、一對多、多對多、多對一等多種配置方式,支持樹狀、網狀等多種拓撲結構。

fanout模式(多點廣播):

fanout模式比較簡單,廣播式的,無視routingkey直接發送給所有的queue

Topic模式(發布/訂閱):

任何發送到Topic Exchange的消息都會被轉發到所有關心RouteKey中指定話題的Queue上

  • 這種模式較為復雜,簡單來說,就是每個隊列都有其關心的主題,所有的消息都帶有一個"標題"(RouteKey),Exchange會將消息轉發到所有關注主題能與RouteKey模糊匹配的隊列。

  • 這種模式需要RouteKey,也許要提前綁定Exchange與Queue。

  • 在進行綁定時,要提供一個該隊列關心的主題,如"#.log.#"表示該隊列關心所有涉及log的消息(一個RouteKey為"MQ.log.error"的消息會被轉發到該隊列)。

  • "#"表示0個或若干個關鍵字,""表示一個關鍵字。如"log."能與"log.warn"匹配,無法與"log.warn.timeout"匹配;但是"log.#"能與上述兩者匹配。

  • 同樣,如果Exchange沒有發現能夠與RouteKey匹配的Queue,則會拋棄此消息。

原文鏈接:https://www.cnblogs.com/TianFang/p/10129490.html

欄目分類
最近更新