1. 程式人生 > 實用技巧 >RabbitMQ的多種Exchange型別

RabbitMQ的多種Exchange型別

RabbitMQ的多種Exchange型別

Exchange分發訊息時,根據型別的不同分發策略有區別。目前共四種類型:direct、fanout、topic、headers(headers匹配AMQP訊息的header而不是路由鍵(Routing-key),此外headers交換器和direct交換器完全一致,但是效能差了很多,目前幾乎用不到了。所以直接看另外三種類型)。

direct(直接交換模式)

img

訊息中的路由鍵(routing key)如果和Binding中的binding key一致,交換器就將訊息發到對應的佇列中。路由鍵與佇列名完全匹配。

注:

direct處理路由鍵

fanout(分發模式)

img

每個發到fanout型別交換器的訊息都會分到所有繫結的佇列上去。fanout交換器不處理該路由鍵,只是簡單的將佇列繫結到交換器上,每個傳送到交換器的訊息都會被轉發到與該交換器繫結的所有佇列上。很像子網廣播,每臺子網內的主機都獲得了一份複製的訊息。fanout型別轉發訊息是最快的。

注:fanout不處理路由鍵

topic(主題模式)

img

topic交換器通過模式匹配分配訊息的路由鍵屬性,將路由鍵和某個模式進行匹配,此時佇列需要繫結到一個模式上。它將路由鍵(routing-key)和繫結鍵(bingding-key)的字串切分成單詞,這些單詞之間用點隔開。它同樣也會識別兩個萬用字元:"#"和""。#匹配0個或多個單詞,

'*'只匹配一個單詞。

例如:user.example1.example2

user.# --> 匹配結果為true,可匹配多個單詞。

user.* --> 匹配結果為false,只匹配user.example1,因為只匹配一個單詞。