RabbitMQ系列(六)基本概念之Routing Key

在 RabbitMQ 中,Routing Key(路由鍵)?是用于將消息從交換機(Exchange)路由到指定隊列(Queue)的關鍵參數。其核心作用是通過特定規則匹配綁定關系,確保消息被正確分發。以下是其核心機制與用法的詳細說明:


一、核心定義與作用

  1. 消息路由的核心標識
    • 生產者發送消息時需指定?Routing Key,交換機根據此值和隊列綁定的?Binding Key?決定消息流向。
    • 類比:類似快遞單上的“地址”,決定包裹應送往哪個區域。
  2. 與交換機類型強關聯
    • Routing Key?的具體匹配規則由交換機類型決定。例如:
      • Direct Exchange:精確匹配?Routing Key?和?Binding Key
      • Topic Exchange:支持通配符(*?匹配一個詞,#?通配符,匹配多個詞)進行模式匹配。
      • Fanout Exchange:忽略?Routing Key,廣播到所有綁定隊列1。

二、不同交換機中的 Routing Key 行為

交換機類型Routing Key 規則典型場景
Direct Exchange完全匹配(如?order.create?→?order.create?)訂單狀態更新、精準任務分發
Topic Exchange通配符匹配(如?articles.#?→?articles.java?)多維度事件分類(如文章分類)
Fanout Exchange無需指定或任意值(消息廣播到所有隊列)系統日志廣播、全局通知
Headers Exchange不依賴?Routing Key,基于消息頭匹配按自定義屬性過濾消息(較少用)

三、應用場景與代碼示例

1.?Direct Exchange 的精確路由
// 綁定隊列到交換機,指定 Binding Key 為 "order.update" 
channel.queueBind("order_queue",  "direct_exchange", "order.create"); // 發送消息時指定 Routing Key 
channel.basicPublish("direct_exchange",  "order.create",  null, "訂單已更新".getBytes());

說明:僅?Binding Key?為?order.create?的隊列會接收此消息。

2.?Topic Exchange 的靈活匹配
// 綁定隊列到交換機,Binding Key 為 "articles.*"
channel.queueBind("news_queue",  "topic_exchange", "articles.*");// 發送消息,Routing Key 為 "articles.java" 
channel.basicPublish("topic_exchange",  "articles.java",  null, "Java文章".getBytes());

說明:符合?articles.*?模式的隊列(如?articles.java?、articles.python?)均可接收消息。


四、配置注意事項

  1. 默認 Exchange 的特殊性
    RabbitMQ 預定義了一個無名 Direct Exchange(默認交換機),隊列默認通過?Routing Key(即隊列名)與其綁定。此時直接指定隊列名即可路由消息。

  2. 動態綁定與解耦
    可通過代碼動態綁定隊列與交換機,靈活調整路由規則(如 Spring AMQP 的?@RabbitListener?注解)。

  3. 消息丟失風險
    若消息的?Routing Key?未匹配任何隊列綁定,消息將被丟棄(需通過備用交換機或死信隊列處理)。


五、總結

  • 核心作用:通過規則匹配實現消息的精準或靈活路由。
  • 選擇建議
    • 精確路由 → Direct Exchange
    • 多維度分類 → Topic Exchange
    • 廣播 → Fanout Exchange
  • 進階實踐:結合?Headers Exchange?或死信隊列實現復雜業務邏輯

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/71048.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/71048.shtml
英文地址,請注明出處:http://en.pswp.cn/web/71048.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Spark內存并行計算框架

spark核心概念 spark集群架構 spark集群安裝部署 spark-shell的使用 通過IDEA開發spark程序 1. Spark是什么 Apache Spark? is a unified analytics engine for large-scale data processingspark是針對于大規模數據處理的統一分析引擎 spark是在Hadoop基礎上的改進&…

Ubuntu 安裝 Nginx并配置反向代理

Ubuntu版本:Ubuntu 24.04.2 LTS 一、安裝Nginx ?更新系統軟件包? 安裝前需確保系統處于最新狀態,避免依賴沖突 sudo apt update && sudo apt upgrade -y ?安裝Nginx主程序? Ubuntu官方倉庫已包含穩定版Nginx,直接安裝即可 sudo…

Solr中得Core和Collection的作用和關系

Solr中得Core和Collection的作用和關系 一, 總結 在Apache Solr中,Core和Collection 是兩個核心概念,他們分別用于單機模式和分布式模式(SolrCloud)中,用于管理和組織數據。 二,Core 定義&am…

yolov8,yolo11,yolo12 服務器訓練到部署全流程 筆記

正在進行中,隨時更新 一. Anaconda配置 1.安裝anaconda (1)下載.sh文件 Index of /anaconda/archive/ | 清華大學開源軟件鏡像站 | Tsinghua Open Source Mirror (2)scp到服務器后,運行安裝包 bash Anaconda3-2020.07-Linux-x86_64.sh (3)安裝anacond…

從零開始開發純血鴻蒙應用之語音朗讀

從零開始開發純血鴻蒙應用 〇、前言一、API 選型1、基本情況2、認識TextToSpeechEngine 二、功能集成實踐1、改造右上角菜單2、實現語音播報功能2.1、語音引擎的獲取和關閉2.2、設置待播報文本2.3、speak 目標文本2.4、設置語音回調 三、總結 〇、前言 中華漢字洋洋灑灑何其多…

【AGI】DeepSeek開源周:The whale is making waves!

DeepSeek開源周:The whale is making waves! 思維火花引言一、DeepSeek模型體系的技術演進1. 通用語言模型:DeepSeek-V3系列2. 推理優化模型:DeepSeek-R1系列3. 多模態模型:Janus系列 二、開源周三大工具庫的技術解析1…

25年前端如何走的更穩

2025年,隨著deepseek引起的AI大模型技術的深度革命,帶來了很多機會和挑戰,前端程序員作為互聯網里一個普通但必不可少的崗位,在當前形勢下,需要主動變革才能走的更穩。本文簡單介紹三個方向,Web3前端、全棧…

DockerでOracle Database 23ai FreeをセットアップしMAX_STRING_SIZEを拡張する手順

DockerでOracle Database 23c FreeをセットアップしMAX_STRING_SIZEを拡張する手順 はじめに環境準備ディレクトリ作成Dockerコンテナ起動 データベース設定変更コンテナ內でSQL*Plus起動PDB操作と文字列サイズ拡張設定検証 管理者ユーザー作成注意事項まとめ はじめに Oracle…

市場加速下跌,但監管「堅冰」正在消融

作者:Techub 熱點速遞 撰文:Yangz,Techub News 與近日氣溫逐步回暖不同,自 2 月 25 日比特幣跌破 9 萬美元以來,加密貨幣市場行情一路下滑。今日 10 時 50 分左右,比特幣更是跌破 8 萬美元大關&#xff0c…

【Android】安卓付款密碼輸入框、支付密碼輸入框

如圖 代碼部分&#xff1a; public class PayPasswordDialog extends AppCompatDialogFragment {private String mPayPass "";private String mTitle, mMoney;private final TextView[] mPayPassTextViewArray new TextView[6];private List<Integer> mPayP…

Java數據結構_一篇文章了解常用排序_8.1

本文所有排序舉例均默認為升序排列。 目錄 1. 常見的排序算法 2. 常見排序算法的實現 2.1 插入排序 2.1.1 基本思想&#xff1a; 2.1.2 直接插入排序 2.1.3 希爾排序&#xff08;縮小增量排序&#xff09; 2.2 選擇排序 2.2.1 基本思想&#xff1a; 2.2.2 直接選擇排…

性能調優篇——索引優化與執行計劃解析

引言 當數據庫表數據突破千萬級時&#xff0c;一個未優化的索引可能讓查詢耗時從毫秒級暴增至分鐘級。某電商平臺曾因商品搜索接口的索引缺失&#xff0c;導致大促期間數據庫CPU飆升至98%&#xff0c;直接引發服務雪崩。本文將深入B樹索引的存儲奧秘&#xff0c;詳解慢查詢日志…

計算機畢業設計SpringBoot+Vue.js人口老齡化社區服務與管理平臺 (源碼+文檔+PPT+講解)

溫馨提示&#xff1a;文末有 CSDN 平臺官方提供的學長聯系方式的名片&#xff01; 溫馨提示&#xff1a;文末有 CSDN 平臺官方提供的學長聯系方式的名片&#xff01; 溫馨提示&#xff1a;文末有 CSDN 平臺官方提供的學長聯系方式的名片&#xff01; 作者簡介&#xff1a;Java領…

C#上位機--三元運算符

引言 在 C# 上位機開發中&#xff0c;我們經常需要根據不同的條件來執行不同的操作。條件判斷是編程中不可或缺的一部分&#xff0c;而三元運算符就是一種簡潔而強大的條件判斷工具。本文將詳細介紹 C# 中的三元運算符&#xff0c;探討其在上位機開發中的應用場景&#xff0c;…

AI時代保護自己的隱私

人工智能最重要的就是數據&#xff0c;讓我們面對現實&#xff0c;大多數人都不知道他們每天要向人工智能提供多少數據。你輸入的每條聊天記錄&#xff0c;你發出的每條語音命令&#xff0c;人工智能生成的每張圖片、電子郵件和文本。我建設了一個網站(haptool.com)&#xff0c…

Hutool - POI:讓 Excel 與 Word 操作變得輕而易舉

各位開發者們&#xff0c;在日常的 Java 開發工作里&#xff0c;處理 Excel 和 Word 文件是相當常見的需求。無論是從 Excel 里讀取數據進行分析&#xff0c;還是將數據寫入 Excel 生成報表&#xff0c;亦或是對 Word 文檔進行內容編輯&#xff0c;傳統的 Apache POI 庫雖然功能…

數據庫操作命令詳解:CREATE、ALTER、DROP 的使用與實踐

引言? 數據庫是存儲和管理數據的核心工具&#xff0c;而 ?DDL&#xff08;Data Definition Language&#xff0c;數據定義語言&#xff09;?? 是構建和調整數據庫結構的基石。本文將通過實際示例&#xff0c;詳細講解 CREATE&#xff08;創建&#xff09;、ALTER&#xff0…

Asp.Net Core WebAPI開發教程(入門)

一、Asp.Net Core WebAPI項目創建 二、Asp.Net Core WebApi/Mvc路由定義 二、Asp.Net Core WebAPI 請求案例 Asp.Net WebApi Get請求整理&#xff08;一&#xff09; Asp.Net WebApi Post請求整理&#xff08;一&#xff09; Asp.Net WebApi Action命名中已‘Get’開頭問題 …

VSCode大的JSON數據不能折疊問題

修改editor.foldingMaximumRegions為10000解決&#xff0c;默認只支持5000 在 VSCode 中&#xff0c;默認的 JSON 文件折疊功能對嵌套層級較深的數據支持有限。以下是幾種解決嵌套 4 層以上數據無法折疊的方法&#xff1a; 1. 使用擴展插件 安裝支持更復雜折疊功能的插件&am…

IPoIB源碼深度解析:如何基于TCP/IP協議棧實現高性能InfiniBand通信

一、IPoIB的核心設計理念 IPoIB(IP over InfiniBand)是一種在InfiniBand網絡上承載IP流量的技術,其核心目標是在不修改上層應用的前提下,利用InfiniBand的高帶寬和低延遲特性。與自定義協議棧不同,IPoIB通過深度集成到Linux內核TCP/IP協議棧中,將InfiniBand設備抽象為標…