rabbitmq幾種交換機
幾種常用exchange總結
透過前面幾篇文章的學習,我們知道了常用的幾種交換機:direct exchange、topic exchange、fanout exchange三種交換機。本篇文章我們對這三種交換機進行總結。
Direct exchange:直連交換機。
定義:根據路由鍵(routingkey)需要完全匹配上才可以。會把訊息路由到那些bingding key與routing key完全匹配的佇列中。Rabbit mq預設的路由就是這種。
單個繫結示意圖:
說明:
我們可以看到有三個routingkey:orange、black、green。如果生產者P傳送訊息的key是orange(需要完全匹配的)那麼將會被路由的Q1這個消費者上。如果傳送的是black或者是green的時候,將會被路由到Q2上面。
多個繫結示意圖:
說明:
將相同的key繫結在不同的佇列中。當生產者P傳送訊息key是black的時候,Q1和Q2都會被接收到。
簡單理解:
以手機充電線的介面為例:
手機充電介面,在之前就小口的,蘋果先用type-c介面的充電線。此時富士康需要生產不同的充電介面來供應不同的手機供應商。當時蘋果手機的時候,只識別type-c。如上圖單個繫結。
現在手機都使用了type-c介面。這個時候,富士康在生產充電線的時候,只需要生產一種即可。此時就如多個繫結一樣。
Topic Exchange:主題交換機
此種交換機的routingkey不能有任意的。必須是由點分開的一串單詞。可以由多個單詞,但是有最大限制。最大限制是:255bytes。
Topic交換機與direct交換機有點類似:需要使用指定的key傳送訊息將被髮送到所有使用匹配繫結key的佇列。
不同點:topic exchange支援模糊匹配。匹配規則:
*:表示匹配任意一個單詞
#:表示匹配任意一個或多個單詞。
一句話:所有符合routingkey(此中狀態下的key可以是一個表示式)的routingkey所有bingd的佇列都可以收到訊息。
Topic Exchange示意圖:
說明:
我們可以到routing key有模糊匹配。當生產者P傳送a。orange。b訊息的時候,會被Q1佇列接收。規則見上。
Fanout Exchange:廣播模式
此種模式下,會把所有傳送到當前交換機的訊息全部路由到所有與當前交換機繫結的佇列中去。
執行示意圖: