Rabbitmq中常見7種模式介紹

  1. p:生成者,生成消息的程序
  2. c:消費者,消費消息的程序
  3. Queue:消息隊列,用于緩存消息,生產者向里面投遞消息,消費者從里面拿取消息消費
  4. X:交換機,在rabbitMQ中,實際上是把生成者的消息先發送到交換機上面,然后在按照一定的規則路由到一個或者多個隊列中,相關概念:[[交換機類型]]

simple(簡單模式)

在這里插入圖片描述

  1. 一個生產者,一個消費者
  2. 適用場景:消息只能被單個消費者處理

此處省略了exchange交換機,在rabbitmq中是一定有交換機的,其他的可能沒有

Work Queue(工作隊列)

在這里插入圖片描述

  1. 一個生產者,多個消費者
  2. 多消息的情況下,Work Queue 會將消息分派給不同的消費者,每個消費者都會接收到不同的消息
  3. 特點:消息不會重復,分配給不同的消費者
  4. 使用場景:在集群環境中做異步處理

此處省略了exchange交換機,在rabbitmq中是一定有交換機的,其他的可能沒有

比如在12306短信通知服務,訂票成功后,訂單消息會發送到RabbitMQ,短信服務從RabbitMQ中獲取訂單消息,并且發送消息
在這里插入圖片描述

Publish/Subscribe(發布/訂閱)

在這里插入圖片描述

  1. 一個生產者,多個消費者
  2. X代表交換機消息復制多份,每個消費者接收相同的消息
  3. 生產者發送一條消息,經過交換機轉發到不同的隊列,多個不同隊列就有多個不同的消費者(無條件)
  4. 適合場景:消息需要被多個消費者同時接收的場景,如實時通知或者廣播消息

Routing(路由模式)

在這里插入圖片描述

  1. 路由模式是發布訂閱模式的變種,在其基礎上添加了RoutingKey
  2. 相比于前者的無條件分發消息,路由模式根據Exchange的RoutingKey的規則將數據篩選后發送給對應的消費者隊列
  3. 使用場景:需要特定規則分發消息的場景

Topic(通配符模式)

在這里插入圖片描述

  1. 在routingKey的基礎上,增添[[交換機類型#^8c5d09|通配符]]的功能,使得匹配規則更加靈活
  2. 交換機通過RoutingKey將消息轉發給RoutingKey匹配的隊列
  3. 適用場景:需要靈活匹配和過濾消息的場景

[!QUESTION] Routing和Topic有什么不同?
不同之處:routingKey的匹配方式不同。Routing模式是相等匹配,topics模式是通配符匹配

RPC(Remote Procedure Call)

在這里插入圖片描述

  1. 當客戶端啟動時,它會創建一個獨占的回調隊列。
  2. 對于 RPC 請求,客戶端發送一個包含兩個屬性的消息: reply_to,該屬性設置為回調隊列,以及 correlation_id,該屬性為每個請求設置一個唯一值。
  3. 請求被發送到一個 rpc_queue 隊列。
  4. RPC 工作進程(又名:服務器)正在該隊列上等待請求。當請求出現時,它會執行任務,并使用來自 replyTo 字段的隊列將結果消息發送回客戶端。
  5. 客戶端在應答隊列上等待數據。當消息出現時,它會檢查 correlationId 屬性。如果它與請求中的值匹配,則將響應返回給應用程序。

Publisher Confirms(發布確認模式)

Publisher Confirms模式是RabbitMQ提供的一種確保消息可靠發送到RabbitMQ服務器的機制。在這種模式下,生產者可以等待RabbitMQ服務器的確認,以確保消息已經被服務器接收并處理。

  1. 生產者將Channel設置為confirm模式(通過調用channel.confirmSelect()完成)后,發布的每一條消息都會獲得一個唯一的ID,生產者可以將這些序列號與消息關聯起來,以便跟蹤消息的狀態。
  2. 當消息被RabbitMQ服務器接收并處理后,服務器會異步地向生產者發送一個確認(ACK)給生產者(包含消息的唯一ID),表明消息已經送達。
  3. 通過Publisher Confirms模式,生產者可以確保消息被RabbitMQ服務器成功接收,從而避免消息丟失的問題。
  4. 適用場景:對數據安全性要求較高的場景。比如金融交易,訂單處理。

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

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

相關文章

SpringAI 1.0.0發布:打造企業級智能聊天應用

官方文檔 gitee的demo 1、前言 2025年5月,SpringAI 1.0.0終于正式發布。這不僅是另一個普通的庫,更是將Java和Spring推向AI革命前沿的戰略性舉措。給Java生態帶來了強大且全面的AI工程解決方案。眾多企業級應用在SpringBoot上運行關鍵業務&#xff0c…

全球各界關注與討論鴿姆智庫的多維視角分析?

【摘要】全球各界對鴿姆智庫的關注與討論主要集中在以下多維視角: 一、技術創新維度 ?通用思維框架(GTF)與中文智慧編程系統(CWPS)? GTF通過模擬人類格式塔認知,實現模式補全與圖形-背景分離功能&#xf…

1??4?? OOP:類、封裝、繼承、多態

文章目錄一、類與實例:從抽象到具體1?? 類(Class):抽象的模板2?? 實例(Instance):具體的對象3?? __init__ 方法:初始化實例屬性二、封裝:數據與邏輯的“打包”1??…

靜態鏈接 qt 失敗

配置靜態構建 qt 如下所示,執行配置的時候添加 -static 選項即可。 $skiped_modules ("qttools""qtdoc""qttranslations""qtlanguageserver""qtdeclarative""qtquicktimeline""qtquick3d"…

Qt 多線程界面更新策略

在Qt開發中,界面(UI)更新是高頻操作——無論是后臺任務的進度展示、傳感器數據的實時刷新,還是網絡消息的即時顯示,都需要動態更新界面元素。但Qt對UI操作有一個核心限制:所有UI組件的創建和更新必須在主線…

1.09---區塊鏈節點到底做了什么?從全節點到輕客戶端

鯤志博主出品 Web2 開發者的 Web3 修煉之路 ??【好看的靈魂千篇一律,有趣的鯤志一百六七!】- 歡迎認識我~~ 作者:鯤志說 (公眾號、B站同名,視頻號:鯤志說996) 科技博主:極星會 星輝大使 全棧研發:java、go、python、ts,前電商、現web3 主理人:COC杭州開發者…

Linux線程概念與控制(下)

目錄 前言 2.線程控制 1.驗證理論 2.引入pthread線程庫 3.linux線程控制的接口 3.線程id及進程地址空間布局 4.線程棧 前言 本篇是緊接著上一篇的內容,在有了相關線程概念的基礎之上,我們將要學習線程控制相關話題!! 2.線程…

力扣面試150題--只出現一次的數字

Day 91 題目描述## 思路 交換律&#xff1a;a ^ b ^ c <> a ^ c ^ b 任何數于0異或為任何數 0 ^ n > n 相同的數異或為0: n ^ n > 0 根據以上 很容易想到做法&#xff0c;將數組中所有的數異或起來&#xff0c;得到的就是只出現一次的數 class Solution {public in…

【運維基礎】Linux 進程調度管理

Linux 進程調度管理 進程調度器 現代計算機系統中既包含只有單個CPU且任何時候都只能處理單個指令的低端系統到具有幾百個cpu、每個cpu有多個核心的高性能超級計算機&#xff0c;可以并行執行幾百個指令。所有這些系統都有一個共同點&#xff1a;系統進程線程數量超出了CPU數量…

深度學習篇---層與層之間搭配

在深度學習中&#xff0c;各種層&#xff08;比如卷積層、激活函數、池化層等&#xff09;的搭配不是隨意的&#xff0c;而是像 “搭積木” 一樣有規律 —— 每一層的作用互補&#xff0c;組合起來能高效提取特征、穩定訓練&#xff0c;最終提升模型性能。下面用通俗易懂的方式…

服務器多線主要是指什么?

在數字化的網絡環境當中&#xff0c;服務器已經成為各個企業提升線上業務發展的重要網絡設備&#xff0c;其中服務器多線則是指一臺服務器中能夠同時接入多個網絡運營商&#xff0c;并且通過智能路由技術實現用戶訪問請求的自動化分配&#xff0c;大大提高了用戶訪問數據信息的…

從0到1學PHP(三):PHP 流程控制:掌控程序的走向

目錄一、條件語句&#xff1a;程序的 “抉擇路口”1.1 if 語句家族&#xff1a;基礎與進階1.2 switch 語句&#xff1a;精準匹配的 “導航儀”二、循環語句&#xff1a;程序的 “重復舞步”2.1 for 循環&#xff1a;有序的 “征程”2.2 while 與 do - while 循環&#xff1a;條…

uni-app框架基礎

闡述 MVC 模式1, MVC與MVVMMVC 他是后端的一個開發思想MVVM是基于MVC中的view這層所分離出來的一種設計模式。MVC架構詳解MVC&#xff08;Model-View-Controller&#xff09;是一種廣泛使用的軟件設計模式&#xff0c;主要用于分離應用程序的業務邏輯、用戶界面和輸入控制。這種…

智慧收銀系統開發進銷存庫存統計,便利店、水果店、建材與家居行業的庫存匯總管理—仙盟創夢IDE

在零售與批發行業的數字化轉型中&#xff0c;當前庫存匯總作為進銷存管理的核心環節&#xff0c;直接影響著企業的資金周轉、銷售決策和客戶滿意度。現代收銀系統已超越傳統的收款功能&#xff0c;成為整合多渠道數據、實現實時庫存匯總的中樞神經。本文將深入剖析便利店、水果…

selenium(WEB自動化工具)

定義解釋 Selenium是一個用于Web應用程序測試的工具。Selenium測試直接運行在瀏覽器中&#xff0c;就像真正的用戶在操作一樣。支持的瀏覽器包括IE&#xff08;7, 8, 9, 10, 11&#xff09;&#xff0c;Mozilla Firefox&#xff0c;Safari&#xff0c;Google Chrome&#xff0…

windows本地使用conda部署Open-webui

前提條件 Open-webui使用python3.11.9 步驟 conda操作也可以參考 安裝python torch、transformer、記錄 1、conda環境 # 創建環境 conda create --name openwebui python3.11.9# 激活環境 conda activate openwebui# 升級pip版本 pip install --upgrade pip# pip安裝openwe…

【Unity筆記04】數據持久化

&#x1f31f; 方案核心思想遵循以下設計原則&#xff1a;數據安全第一&#xff1a;絕不使用明文存儲&#xff0c;采用AES加密算法保護數據。性能優化&#xff1a;使用異步I/O操作&#xff0c;避免阻塞主線程導致游戲卡頓。結構清晰&#xff1a;模塊化設計&#xff0c;職責分離…

深入理解 HTML5 Web Workers:提升網頁性能的關鍵技術解析

深入理解 HTML5 Web Workers&#xff1a;提升網頁性能的關鍵技術解析引言1. 什么是 Web Workers&#xff1f;Web Workers 的特點&#xff1a;2. Web Workers 的使用方式2.1 創建一個 Web Worker步驟 1&#xff1a;創建 Worker 文件步驟 2&#xff1a;在主線程中調用 Worker3. W…

會議室預定系統核心技術:如何用一行SQL解決時間沖突檢測難題

文章目錄 一、為什么時間沖突檢測是預定系統的核心挑戰? 二、黃金法則:兩行線段重疊檢測法 三、四大沖突場景實戰解析(同一會議室) 四、生產環境完整解決方案 1. 基礎沖突檢測函數 2. 預定API處理流程 3. 高級邊界處理技巧 五、性能優化關鍵策略 六、不同數據庫的適配方案 …

13.正則表達式:文本處理的瑞士軍刀

正則表達式&#xff1a;文本處理的瑞士軍刀 &#x1f3af; 前言&#xff1a;當文本遇上神奇的密碼 想象一下&#xff0c;你是一個圖書管理員&#xff0c;面對著一堆亂七八糟的書籍信息&#xff1a; “聯系電話&#xff1a;138-1234-5678”“郵箱地址&#xff1a;zhang.sangm…