RabbitMQ系列(四)基本概念之Exchange

在 RabbitMQ 中,Exchange(交換機)?是消息路由的核心組件,負責根據規則將生產者發送的消息分發到對應的隊列(Queue)中。以下是其核心功能與分類的詳細說明:


一、Exchange 的核心作用

  1. 消息路由樞紐
    • 生產者將消息發送到 Exchange,而非直接發送到隊列。Exchange 根據綁定規則(Binding Key)?和?路由鍵(Routing Key)?把消息應轉發到對應的隊列。
    • 類比:類似于郵局系統,Exchange 是“郵局”,負責將信件(消息)分揀到正確的郵箱(隊列)。
  2. 解耦生產者與消費者
    • 生產者只需關注將消息發送到 Exchange,無需知道消息最終發到哪個隊列進行消費。

二、Exchange 的四種類型

1.?Direct Exchange(直連交換機)
  • 路由規則:完全匹配?Routing Key,僅將消息轉發到?Binding Key?與?Routing Key?完全一致的隊列。
  • 適用場景:點對點精確路由(如訂單系統根據訂單 ID 分發消息)。
  • 示例
    // 隊列綁定到交換機,指定 Binding Key 為 "order.create" 
    channel.queueBind(queueName, "direct_exchange", "order.create");
2.?Fanout Exchange(廣播交換機)
  • 路由規則:忽略?Routing Key,將消息廣播發送到所有綁定的隊列,此時可不指定Routing Key。
  • 適用場景:發布/訂閱模式(如系統日志廣播、實時通知)。
  • 示例
    // 所有隊列綁定到 Fanout Exchange 即可接收消息
    channel.exchangeDeclare("fanout_exchange", BuiltinExchangeType.FANOUT);
3.?Topic Exchange(主題交換機)
  • 路由規則:通過?Routing Key?的模式匹配(通配符?*?和?#)分發消息。
    • *?匹配一個單詞(如?news.sports.*?匹配?news.sports.basketball?)。
    • #?匹配零或多個單詞(如?news.#?匹配?news.sports?或?news)。
  • 適用場景:復雜路由邏輯(如新聞分類、多維度事件通知)。
  • 示例
    // 綁定 Key 為 "news.*",匹配如 "news.sports" 等消息 
    channel.queueBind(queueName, "topic_exchange", "news.*");
4.?Headers Exchange(頭交換機)????????
  • 路由規則:根據消息頭(Headers)中的鍵值對匹配,而非?Routing Key
  • 適用場景:基于自定義屬性路由(如根據消息類型或版本過濾)。
  • 示例
    Map<String, Object> headers = new HashMap<>(); 
    headers.put("type", "alert"); 
    channel.queueBind(queueName, "headers_exchange", "", headers);

三、Exchange 的應用場景對比

類型路由規則典型場景
Direct精確匹配 Routing Key訂單狀態更新、任務調度
Fanout廣播到所有隊列系統日志分發、全局通知
Topic通配符匹配 Routing Key新聞分類、多維度事件路由
Headers消息頭鍵值對匹配按自定義屬性過濾消息(較少用)

四、配置注意事項

  1. 默認 Exchange
    RabbitMQ 預定義了一個無名 Direct Exchange,默認所有隊列通過?Routing Key?與其綁定。
  2. 消息丟失風險
    若 Exchange 未綁定任何隊列,消息會被丟棄(因 Exchange 本身不存儲消息)。
  3. 性能差異
    性能排序:Fanout > Direct > Topic,Topic 因模式匹配開銷較大。

通過合理選擇 Exchange 類型,可實現靈活的消息路由策略,滿足不同業務場景需求。

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

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

相關文章

有沒有什么免費的AI工具可以幫忙做簡單的ppt?

互聯網各領域資料分享專區(不定期更新): Sheet 正文 1. 博思AIPPT 特點:專為中文用戶設計,支持文本/文件導入生成PPT,內置海量模板和智能排版功能,涵蓋商務、教育等多種場景。可一鍵優化布局、配色,并集成AI繪圖功能(文生圖/圖生圖)。適用場景:職場匯報、教育培訓、商…

【Python · PyTorch】循環神經網絡 RNN(基礎應用)

【Python PyTorch】循環神經網絡 RNN&#xff08;簡單應用&#xff09; 1. 簡介2. 模擬客流預測&#xff08;數據集轉化Tensor&#xff09;3.1 數據集介紹3.2 訓練過程 3. 模擬股票預測&#xff08;DataLoader加載數據集&#xff09;3.1 IBM 數據集3.1.2 數據集介紹3.1.3 訓練…

【JSON2WEB】15 銀河麒麟操作系統下部署JSON2WEB

【JSON2WEB】系列目錄 【JSON2WEB】01 WEB管理信息系統架構設計 【JSON2WEB】02 JSON2WEB初步UI設計 【JSON2WEB】03 go的模板包html/template的使用 【JSON2WEB】04 amis低代碼前端框架介紹 【JSON2WEB】05 前端開發三件套 HTML CSS JavaScript 速成 【JSON2WEB】06 JSO…

地基簡識Spring MVC 組件

Spring MVC 是一個基于 MVC 設計模式的框架&#xff0c;其核心組件協同工作以處理 HTTP 請求并生成響應。以下是各組件的詳細說明及其協作流程&#xff1a; 一、?核心組件 ?DispatcherServlet&#xff08;前端控制器&#xff09;? ?作用&#xff1a;接收所有請求并協調其他…

Spring Boot(七):Swagger 接口文檔

1. Swagger 簡介 1.1 Swagger 是什么&#xff1f; Swagger 是一款 RESTful 風格的接口文檔在線自動生成 功能測試功能軟件。Swagger 是一個規范和完整的框架&#xff0c;用于生成、描述、調用和可視化 RESTful 風格的 Web 服務。目標是使客戶端和文件系統作為服務器以同樣的…

cursor 彈出在簽出前,請清理倉庫工作樹 窗口

問題出現的背景&#xff1a;是因為我有兩臺電腦開發&#xff0c;提交后&#xff0c;另一個電腦的代碼是舊的&#xff0c;這個時候我想拉取最新的代碼&#xff0c;就會出現如下彈窗&#xff0c;因為這個代碼暫存區有記錄或者工作區有代碼的修改&#xff0c;所以有沖突&#xff0…

Cocos Creator3.8.6拖拽物體的幾種方式

文章目錄 前言一、第一種通過UILocation二、第二種通過UIDelta實現總結 前言 在游戲開發中&#xff0c;拖拽物體是一個非常常見的交互功能&#xff0c;無論是用于UI元素的拖動&#xff0c;還是場景中物體的移動&#xff0c;拖拽操作都能極大地提升用戶體驗。Cocos Creator 3.8…

在 Mac mini M2 上本地部署 DeepSeek-R1:14B:使用 Ollama 和 Chatbox 的完整指南

隨著人工智能技術的飛速發展&#xff0c;本地部署大型語言模型&#xff08;LLM&#xff09;已成為許多技術愛好者的熱門選擇。本地部署不僅能夠保護隱私&#xff0c;還能提供更靈活的使用體驗。本文將詳細介紹如何在 Mac mini M2&#xff08;24GB 內存&#xff09;上部署 DeepS…

《UE5_C++多人TPS完整教程》學習筆記33 ——《P34 關卡與大廳之間的過渡(Transition Level And Lobby)》

本文為B站系列教學視頻 《UE5_C多人TPS完整教程》 —— 《P34 關卡與大廳之間的過渡&#xff08;Transition Level And Lobby&#xff09;》 的學習筆記&#xff0c;該系列教學視頻為計算機工程師、程序員、游戲開發者、作家&#xff08;Engineer, Programmer, Game Developer,…

Nginx 配置與常用命令速查手冊

Nginx 配置文件結構 Linux 中 Nginx 的配置文件&#xff1a; 通常位于 /etc/nginx/nginx.conf 或 /usr/local/nginx/conf/nginx.conf。 Nginx 采用模塊化設計&#xff0c;主要分為以下部分&#xff1a; 1. 全局塊 配置與服務器整體相關的參數&#xff0c;如工作進程數、日…

Vscode 便用快捷鍵設置教程

文章目錄 簡介&#xff1a;1. go to define (跳轉到函數定義的位置)2. go to declaration (跳轉到函數聲明的位置)3. move line &#xff08;上下移動本行代碼&#xff09;3.1上下復制本行代碼 4. 前進和后退&#xff08;就是前進到光標上一次停留的位置&#xff0c;和后退到那…

Vim 常用快捷鍵大全:跳轉、編輯、查找替換全解析

摘要&#xff1a; Vim 是一款非常強大的文本編輯器&#xff0c;許多程序員和系統管理員都離不開它。 本文詳細介紹了 Vim 編輯器中的常用快捷鍵和命令&#xff0c;從基本模式、光標移動、編輯操作到查找替換&#xff0c;再到文件保存等常用操作&#xff0c;幫助你快速上手并提…

【實戰篇】【深度解析DeepSeek:從機器學習到深度學習的全場景落地指南】

一、機器學習模型:DeepSeek的降維打擊 1.1 監督學習與無監督學習的"左右互搏" 監督學習就像學霸刷題——給標注數據(參考答案)訓練模型。DeepSeek在信貸風控場景中,用邏輯回歸模型分析百萬級用戶數據,通過特征工程挖掘出"凌晨3點頻繁申請貸款"這類魔…

Vue核心知識:Vue動態權限到按鈕完整方案

為了進一步實現上面提到的動態路由功能&#xff0c;并且加入對每個路由的權限控制&#xff08;即增、刪、改、查按鈕的權限控制&#xff09;&#xff0c;我們需要對數據庫、后端接口、前端的設計做一些改進和擴展。下面我將詳細描述如何在現有方案的基礎上加入對路由的增、刪、…

swift 開發效率提升工具

安裝github copliot for xcode github/CopilotForXcode brew install --cask github-copilot-for-xcode安裝swiftformat for xcode brew install swiftformatXcode Swift File代碼格式化-SwiftFormat

Trae智能協作AI編程工具IDE:如何在MacBook Pro下載、安裝和配置使用Trae?

Trae智能協作AI編程工具IDE&#xff1a;如何在MacBook Pro下載、安裝和配置使用Trae&#xff1f; 一、為什么選擇Trae智能協作IDE&#xff1f; 在AI編程新時代&#xff0c;Trae通過以下突破性功能重新定義開發體驗&#xff1a; 雙向智能增強&#xff1a;AI不僅提供代碼補全&a…

【推薦項目】023-游泳俱樂部管理系統

023 游泳俱樂部管理系統 游泳俱樂部管理系統概述 前端技術框架&#xff1a; 我們優雅地采用了Vue.js作為游泳俱樂部管理系統的前端基礎框架。Vue.js以其輕盈、高效和易于上手的特點&#xff0c;為我們的用戶界面帶來了極致的流暢性和響應速度。通過Vue.js&#xff0c;我們為…

C語言:51單片機 基礎知識

一、單片機概述 單片機的組成及其特點 單片機是指在一塊芯片上集成了CPU、ROM、RAM、定時器/計數器和多種I/O接口電路等&#xff0c;具有一定規模的微型計算機。 特點&#xff1a; 1、單片機的存儲器以ROM、RAM嚴格分工。 2、采用面向控制的指令系統。 3、單片機的I/O口引腳通…

【計算機網絡入門】初學計算機網絡(八)

目錄 1. S-W協議的信道利用率 2. GBN、SR協議的信道利用率 3.術語補充 3.1 滑動窗口協議 3.2 ARQ協議、連續ARQ協議 4. 信道劃分介質訪問控制 4.1 時分復用&#xff08;TDM&#xff09; 4.2 統計時分復用&#xff08;STDM&#xff09; 4.3 頻分復用&#xff08;FDM&a…

HarmonyOS學習第7天: 文本組件點亮界面的文字魔法棒

一、引言 在 HarmonyOS 那豐富多彩的系統界面中&#xff0c;從簡潔直觀的應用圖標&#xff0c;到交互流暢的操作菜單&#xff0c;再到生動形象的圖文展示&#xff0c;每一處細節都經過精心雕琢&#xff0c;為用戶帶來了獨特而美妙的視覺與交互體驗。而在這琳瑯滿目的界面元素中…