RabbitMQ的四種交換器類型(fanout、direct、topic、headers)

 

RabbitMQ常見的的四種交換器類型有四種:fanout、direct、topic、headers。

一、fanout

它會把所有發送到該交換器的消息路由到所有與該交換器綁定的隊列中。不需要指定Routingkey和BindingKey

二、direct

它會把消息路由到Routingkey與BindingKey完全匹配的隊列中。一個交換器可以與多個隊列綁定,同時一個交換器與一個隊列綁定的時候可以使用多個BindingKey來多次綁定。

在實踐中如果一個交換器只綁定一個隊列,那麼可以將Routingkey和BindingKey看成一個東西。

如果一個交換器綁定多個隊列,則會把消息路由到Routingkey與BindingKey完全匹配的隊列中。

三、topic

topic與direct類型的交換器類似,也是將消息路由到Routingkey與BindingKey匹配的隊列中,但它不是完全匹配,而是模糊匹配。

Routingkey和BindingKey一般使用“.”作爲字符串的分隔符,例如:order.waitpay.current

BindingKey中可以存在兩種用於模糊匹配的字符串:*和# ;#用於匹配一個單詞,*用於匹配多個單詞(可以是0個);例如:order.*.current。

四、headers

headers類型的交換器不依賴於路由鍵的匹配規則來路由消息,而是根據發送的消息內容中的headers屬性進行匹配。

再綁定隊列和交換器時制定一組鍵值對,當發送消息到交換器時,RabbitMQ會獲取到該消息的headers,對比其中的鍵值對是否完全匹配隊列和交換器綁定時指定的鍵值對。如果完全匹配,則路由該消息到此隊列中。

headers類型的交換器的性能很差,不建議使用。

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