日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

RabbitMQ之交换机的四种类型和属性

發布時間:2025/5/22 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 RabbitMQ之交换机的四种类型和属性 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

交換機主要包括如下4種類型:

Direct exchange(直連交換機)
Fanout exchange(扇型交換機)
Topic exchange(主題交換機)
Headers exchange(頭交換機)
另外RabbitMQ默認定義一些交換機:

默認交換機
amq.* exchanges
還有一類特殊的交換機:Dead Letter Exchange(死信交換機)

Direct exchange(直連交換機)
直連型交換機(direct exchange)是根據消息攜帶的路由鍵(routing key)將消息投遞給對應隊列的,步驟如下:

將一個隊列綁定到某個交換機上,同時賦予該綁定一個綁定鍵(bingding key)
當一個攜帶著路由值為R的消息被發送給直連交換機時,交換機會把它路由給綁定值同樣為R的隊列。
Fanout exchange(扇型交換機)
扇型交換機(funout exchange)將消息路由給綁定到它身上的所有隊列。不同于直連交換機,路由鍵在此類型上不啟任務作用。如果N個隊列綁定到某個扇型交換機上,當有消息發送給此扇型交換機時,交換機會將消息的發送給這所有的N個隊列

Topic exchange(主題交換機)
主題交換機(topic exchanges)中,隊列通過綁定鍵綁定到交換機上,然后,交換機根據消息里的路由值,將消息路由給一個或多個綁定隊列。

扇型交換機和主題交換機異同:

對于扇型交換機路由鍵是沒有意義的,只要有消息,它都發送到它綁定的所有隊列上
對于主題交換機,路由規則由BindingKey決定,只有路由值滿足BindingKey的規則,消息才可以路由到對應的隊列上

匹配規則
RoutingKey 為一個 點號’.’: 分隔的字符串。比如: java.xiaoka.show
BindingKey和RoutingKey一樣也是點號“.“分隔的字符串。
BindingKey可使用 * 和 # 用于做模糊匹配,*匹配一個單詞,#匹配多個或者0個

Headers exchange(頭交換機)
類似主題交換機,但是頭交換機使用多個消息屬性來代替路由鍵建立路由規則。通過判斷消息頭的值能否與指定的綁定相匹配來確立路由規則。
此交換機有個重要參數:”x-match”

當”x-match”為“any”時,消息頭的任意一個值被匹配就可以滿足條件
當”x-match”設置為“all”的時候,就需要消息頭的所有值都匹配成功
RabbitMQ默認定義一些交換機
在RabbitMQ默認定義一些交換機,主要如下:

默認交換機
默認交換機(default exchange)實際上是一個由RabbitMQ預先聲明好的名字為空字符串的直連交換機(direct exchange)。它有一個特殊的屬性使得它對于簡單應用特別有用處:那就是每個新建隊列(queue)都會自動綁定到默認交換機上,綁定的路由鍵(routing key)名稱與隊列名稱相同。

如:當你聲明了一個名為”hello”的隊列,RabbitMQ會自動將其綁定到默認交換機上,綁定(binding)的路由鍵名稱也是為”hello”。因此,當攜帶著名為”hello”的路由鍵的消息被發送到默認交換機的時候,此消息會被默認交換機路由至名為”hello”的隊列中。即默認交換機看起來貌似能夠直接將消息投遞給隊列,如同我們之前文章里看到一例子。

類似amq.*的名稱的交換機

這些是RabbitMQ默認創建的交換機。這些隊列名稱被預留做RabbitMQ內部使用,不能被應用使用,否則拋出403 (ACCESS_REFUSED)錯誤

Dead Letter Exchange(死信交換機)
在默認情況,如果消息在投遞到交換機時,交換機發現此消息沒有匹配的隊列,則這個消息將被悄悄丟棄。為了解決這個問題,RabbitMQ中有一種交換機叫死信交換機。當消費者不能處理接收到的消息時,將這個消息重新發布到另外一個隊列中,等待重試或者人工干預。這個過程中的exchange和queue就是所謂的”Dead Letter Exchange 和 Queue”

交換機的屬性
除交換機類型外,在聲明交換機時還可以附帶許多其他的屬性,其中最重要的幾個分別是:
Name:交換機名稱
Durability:是否持久化。如果持久性,則RabbitMQ重啟后,交換機還存在
Auto-delete:當所有與之綁定的消息隊列都完成了對此交換機的使用后,刪掉它
Arguments:擴展參數

總結

以上是生活随笔為你收集整理的RabbitMQ之交换机的四种类型和属性的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。