RabbitMQ訊息交換模式簡介

2021-09-07 20:45:09 字數 1162 閱讀 5034

rabbitmq是amqp的乙個典型實現,它訊息發布者的訊息發布到exchange上,同時需要制定routingkey,可以通過指定交換機的不同模式實現不同的行為。

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,則會拋棄此訊息。

RabbitMQ 交換機模式

在說正題之前先解釋一下交換機模式是個籠統的稱呼,它不是乙個單獨的模式 包括了訂閱模式,路由模式和主題模式 交換機模式是乙個比較常用的模式,主要是為了實現資料的同步。首先,說一下訂閱模式,就和字面上的意思差不多主要就是乙個生產者,多個消費者,同乙個訊息被多個消費者獲取,先看一下官網的圖示 整體執行過程...

RabbitMQ 三 訊息訂閱模式

佇列1繫結 user.表示其只關注使用者相關的訊息。佇列2繫結 order 表示其只關注訂單相關的訊息。佇列3繫結 svip.表示其只關注svip使用者相關的訊息。當傳送訊息指定 vip.user.order 時,因為佇列1與佇列2能匹配,所以會被傳送到佇列1 2中。如果傳送資訊為 common.u...

訊息佇列Rabbitmq的交換器型別

在rabbitmq中,生產者的訊息都是通過交換器來接收,然後再從交換器分發到不同的佇列中去,在分發的過程中交換器型別會影響分發的邏輯。rabitmq中的交換器有4種型別,分別為fanout direct topic headers四種,其中前三種較為常見,後面一種用的比較少。一般情況下交換器分發會先...