Exchange管理
本文中含有需要您注意的重要提示信息,忽略該信息可能對您的業務造成影響,請務必仔細閱讀。
Producer將消息發送到Exchange,由Exchange將消息路由到一個或多個Queue中(或者丟棄)。Exchange根據Routing Key將消息路由到Queue。不同類型的Exchange的路由規則不同。本文介紹如何在云消息隊列 RabbitMQ 版控制臺創建Exchange、查看統計數據、綁定Queue、綁定Exchange、被Exchange綁定以及發送消息。
創建Exchange
登錄云消息隊列 RabbitMQ 版控制臺,然后在左側導航欄選擇實例列表。
在實例列表頁面的頂部菜單欄選擇地域,然后在實例列表中,單擊目標實例名稱。
在左側導航欄,單擊Exchange 列表。
在Exchange 列表頁面,在當前 Vhost右側的切換下拉列表中,選擇Vhost,然后單擊創建 Exchange。
在創建 Exchange面板,輸入Exchange名稱,選擇Exchange類型,設置是否為Internal類型,然后單擊確定。
參數
描述
Exchange 名稱
Exchange名稱。以amq.開頭的為保留字段,因此不能使用。例如:amq.test。
類型
Exchange類型。取值:
direct:該類型的路由規則會將消息路由到Routing Key完全匹配的Queue中。
topic:該類型與direct類型相似。Topic Exchange路由規則沒有Direct Exchange那么嚴格,支持模糊匹配和多條件匹配,即該類型Exchange使用Routing Key模式匹配和字符串比較的方式將消息路由至綁定的Queue中。
fanout:該類型的路由規則非常簡單,會把所有發送到該Exchange的消息路由到所有與它綁定的Queue中,相當于廣播功能。
headers:該類型與direct類型相似。Headers Exchange使用Headers屬性代替Routing Key進行路由匹配,在綁定Headers Exchange和Queue時,設置綁定屬性的鍵值對;在向Headers Exchange發送消息時,設置消息的Headers屬性鍵值對,使用消息Headers屬性鍵值對和綁定屬性鍵值對比較的方式將消息路由至綁定的Queue。
x-delayed-message:通過聲明該類Exchange,您可以自定義消息的Header屬性x-delay來指定消息延時投遞的時間段,單位為毫秒。消息將在x-delay中定義的時間段后,根據路由規則被投遞到對應的Queue。路由規則取決于x-delayed-type中指定的Exchange路由類型。
x-consistent-hash:x-consistent-hash Exchange支持將Routing Key或Header值進行Hash計算,使用一致性哈希算法將消息路由到不同的Queue上。
x-delayed-type
當Exchange類型為x-delayed-message時,需要配置此參數,以指定Exchange的路由類型。
哈希取值
當Exchange類型為x-consistent-hash時,需要配置此參數,以指定Hash計算的輸入值為哪種類型。取值如下:
RoutingKey
Header 值:使用Header方式作為Hash計算輸入值時,您需要定義hash-header參數的取值。
hash-header
當Exchange類型為x-consistent-hash且哈希取值為Header 值時,需要配置此參數,作為指定Hash計算的輸入值。
Internal
是否為Internal類型,默認值為否。取值:
是:內建類型,用于Exchange和Exchange之間的綁定。
否:非內建類型,用于Exchange和Queue之間的綁定。
查看統計數據
您可以查看各種指標數據,幫助您及時發現和定位問題。
綁定Queue
為Exchange綁定Queue,從而告訴Exchange消息應該被路由到哪些Queue中。
在Exchange 列表頁面,選擇指定Exchange,在其操作列單擊綁定信息。
在Exchange 詳情頁面的綁定關系頁簽,單擊添加綁定。
在添加綁定面板,選擇綁定目標類型為Queue,選擇綁定目標,設置Routing Key,然后單擊確定。
說明若綁定的Exchange的類型為x-consistent-hash時,Routing Key表示綁定的Queue的權重,只能設置為整數,取值范圍為[1~20]。
當存在重復綁定時,只有第一個符合要求的綁定關系生效。
若需要修改已綁定Queue的權重,請先刪除已有的綁定關系再重新添加綁定。
綁定Exchange
為某個Exchange綁定另一個Exchange,從而讓消息根據路由規則從被綁定的Exchange轉發到該Exchange。
在Exchange 列表頁面,選擇指定Exchange,在其操作列單擊綁定信息。
在Exchange 詳情頁面的綁定關系頁簽,單擊添加綁定。
在添加綁定面板,選擇綁定目標類型為Exchange,選擇綁定目標,設置Routing Key,單擊確定。
被Exchange綁定
讓某個Exchange被另一個Exchange綁定,從而讓消息根據路由規則從該Exchange轉發到另一個Exchange。
在Exchange 列表頁面,選擇指定Exchange,在其操作列單擊詳情。
在Exchange 詳情頁面,選擇被綁定關系頁簽,然后單擊添加被綁定。
在添加被綁定面板,選擇源Exchange,在Routing Key文本框輸入Routing Key,綁定目標類型默認為Exchange,目標Exchange默認為此Exchange,單擊確定。
發送消息
為Exchange添加綁定或被綁定關系后,可直接在控制臺發送消息,將消息從Exchange發送到綁定的Queue中,或從被綁定的Exchange發送到源Exchange中。
在Exchange 列表頁面,選擇指定Exchange,在其操作列單擊詳情。
在Exchange 詳情頁面,選擇綁定關系或被綁定關系頁簽。
在綁定關系或被綁定關系列表中,選擇指定的綁定關系,在其操作列,單擊發送消息。
在彈出的發送消息面板中輸入messageId和messageBody,然后單擊確定。
刪除Exchange
刪除指定Exchange后,生產者將無法將消息發送到該Exchange,也無法由當前Exchange路由到一個或多個Queue中,請您謹慎執行。
headers類型的Exchange不支持刪除。
Vhost下的3個內置Exchange(amq.direct、amq.topic和amq.fanout)不支持刪除。
在Exchange 列表頁面,單擊指定Exchange,在Exchange詳情頁面的右上角單擊刪除。
在提示對話框,認真閱讀提示信息,單擊確認。
相關文檔
更多與Exchange相關的信息,請參見Exchange。