RabbitMQ進階, exchange的四種類型

  • 交換器類型

    在介紹這幾種類型之前,先給大家說明一下相關的知識點:
    Exchange:交換器。,生產者將消息發送到 Exchange,由交換器將消息路由到一個或者多個隊列中。
    在這裏插入圖片描述
    RoutingKey: 路由鍵。生產者將消息發給交換器的時候, 一般會指定一個 RoutingKey ,用來指定這個消息的路由規則,而這個 RoutingKey 需要與交換器類型和綁定鍵 (BindingKey)合使用才能最終生效。在發送消息的時候,其中需要的路由鍵是 RoutingKey
    Binding: 綁定。RabbitM 中通過綁定將交換器與隊列關聯起來,在綁定的時候一般會指定一 綁定鍵 BindingKey ,這樣 RabbitMQ 就知 何正確 將消息路由 隊列了,如圖所示。在使用綁定的時候,其中需要的路由鍵是 BindingKey
    在這裏插入圖片描述

    RabbitMQ 常用的交換器類型有 fanout 、 direct、 topic 、 headers 這四種 。 AMQP 協議裏還提
    到另外兩種類型: System 和自定義,這裏不予描述。對於這四種類型下面一一闡述。

fanout:它會把所有發送到該交換器的消息路由到所有與該交換器綁定的隊列中。

direct:它會把消息路由到那些BindingKey和RoutingKey完全匹配的隊列中。

在這裏插入圖片描述
topic:前面講到 direct 類型的交換器路由規則是完全匹配 BindingKey 和 RoutingKey ,但是這種嚴
格的匹配方式在很多情況下不能滿足實際業務的需求。topic類型的交換器在匹配規則上進行了擴展,它與 direct類型的交換器相似,也是將消息路由到BindingKey和RoutingKey相匹配的隊列中,但這裏的匹配規則有些不同。
在這裏插入圖片描述
headers:headers 類型的交換器不依賴於路由鍵的匹配規則來路由消息,而是根據發送的消息內容中
的 headers 屬性進行匹配。在綁定隊列和交換器時制定一組鍵值對 , 當發送消息到交換器時,
RabbitMQ 會獲取到該消息的 headers (也是一個鍵值對的形式) ,對比其中的鍵值對是否完全
匹配隊列和交換器綁定時指定的鍵值對,如果完全匹配則消息會路由到該隊列,否則不會路由
到該隊列 。 headers 類型的交換器性能會很差,而且也不實用,基本上不會看到它的存在。

相關參考:<RabbitMQ實戰指南>
源碼在此

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