RocketMQ 學習

消息隊列

參考官方文檔:https://rocketmq.apache.org/zh/docs/

基本概念

  1. 主題(Topic):是消息傳輸和消息存儲的頂級容器,不是實際的消息容器,而是一個邏輯上的概念,用于區分不同業務消息的標識,內部包含:消息隊列(MessageQueue)消息(Message)
  2. 消息類型(MessageType):按照消息的傳輸特性的不同而定義的不同類型,用于類型管理和權限校驗,包含了:普通消息(Normal)、順序消息(FIFO)、事務消息(Transaction)和定時/延時消息(Delay)。
  3. 消息隊列(MessageQueue):是消息傳輸和消息存儲的實際容器,是消息存儲的最小存儲單元;一個主題由多個隊列組成;由于隊列的先進先出特性,可以通過Offset來標記消息在隊列中的位置以及確定消息之間的順序;還可通過Offset去讀取任意數量的消息,以實現聚合讀取、回溯讀取的特性。
  4. 消息(Message):最小的數據傳輸單元,生產者將業務數據的負載和擴展屬性包裝到消息中發送到服務端進行存儲,然后按照相關語義和訂閱關系投遞到消費者進行消費;特性:不可變性,持久性。
  5. 消息視圖(MessageView):就是面向開發的一個消息只讀接口,可以查看不能修改。
  6. 消息標簽(MessageTag):是基于主題在進行細分的一個標簽,就是給同一主題的消息打上不同的標簽,然后消費者如果訂閱了一個主題,然后它會根據它想要的標簽進行篩選,以此來實現細粒度過濾。
  7. 消息位點(MessageQueueOffset):可以理解為每一個消息對于隊頭位置的偏移量,那么每一個消息都可以確定一個Offset,作用:可以通過記錄消費的Offset來確保不會重復消費消息,而且可以通過改變消費Offset的來重新消費某個消息。
  8. 消費位點(ConsumerOffset):即消費者消費的位置,一定是滿足 MinOffset <= ConsumerOffset <= MaxOffset,如果超出這個范圍,則服務端會強制將 ConsumerOffset 定位到合法的 Offset。
  9. 消息索引(MessageKey):相當于數組下標的索引,可以通過O(1)的時間訪問到索引對應的消息。
  10. 生產者(Producer):即消息的生產者,作用是構建并傳輸消息到服務器的實體,按照要求將業務消息數據封裝并發送給服務器,就是純純給服務器干活的;那干活也有自己的方式:通過API接口去傳遞信息,同樣可以進行批量傳輸的設置,還有就是發送事務消息,這時候生產者就不能夠發完之后撒手不管了,這之間有一個半事務消息的概念,此時不算發送完成,生產者要去執行本地事務消息,再向服務器進行二次事務確認,這時候生產者心想:發送個消息這么麻煩,但是看到自己生產的消息能夠到達相應的位置不至于仍在半路沒人處理強啊,還是會很欣慰的!
  11. 事務檢查器(TransactionChecker):生產者用于執行本地事務檢查和異常事務恢復的監聽器;就是剛才說的生產者發送消息后不能不管不問,需要通過事務檢查器來監聽自己生產的消息是否被正確應用了;流程:生成一條半事務消息 ==> 執行本地事務 ==> 提交事務狀態 ==> if(Broker未收到事務狀態) ==> 生產者進行回查 ==> 回查相應 ==> Broker 根據返回狀態處理消息。
  12. 事務狀態(TransactionResolution):包含事務提交、事務回滾、事務未決,服務端通過判斷事務狀態來控制事務消息是否應該提交。
  13. 消費者分組(ConsumerGroup):類似于主題(Topic),是一個邏輯概念,每一個分組通過在服務端注冊的訂閱關系規則獲得Topic,Topic 與 消費者分組 是多對多關系;同時能夠設置投遞消息的順序;能夠設置消息重試策略。
  14. 消費者(Consumer):類似于隊列(MessageQueue),是接受并消費信息的實體,必須關聯到一個消費者組,同一個分組的消費者的行為約束要相同。
  15. 訂閱關系(Subscription):就是針對接受到的消息消費者該怎么處理,取舍哪些的一個規則,同時也利用了消息過濾,并維護了消費狀態。
  16. 消息過濾:就是根據訂閱上面介紹的消息標簽來進行過濾篩選,這個工作由服務端來完成。
  17. 重置消費位點:就是重新設置消費者要從哪里開始進行信息的消費。
  18. 消息軌跡:一條消息從生產者到消費者走過的路記錄下來,方便排查錯誤信息。
  19. 消息堆積:供多需少,生產的速度大于消費的速度,那些沒有來得及消費的信息便堆積在了一起。
  20. 事務消息:高級消息類型,保證消息生產和本地事務保持一致性。
  21. 定時/延時消息:高級消息類型,相當于設置定時任務,到達指定時間之后才能夠被消費者消費。
  22. 順序消息:按照業務中發送消息的順序去消費,實現業務中的順序處理;就比如搶票,前面提交消息的人一定比后面提供消息的人先得到票。

以上是對RocketMQ中的基本概念的理解,相信了解了這些之后,再去理解其中的業務邏輯會更加得心應手,以上這些概念就類似于零部件,然后記下來就是如何將零件組裝起來造出來一個產品,會持續更新~

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

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

相關文章

Conda更換鏡像源教程:加速Python包下載

Conda更換鏡像源教程&#xff1a;加速Python包下載 為什么要更換conda鏡像源&#xff1f; Conda作為Python的包管理和環境管理工具&#xff0c;默認使用的是國外鏡像源&#xff0c;在國內下載速度往往較慢。通過更換為國內鏡像源&#xff0c;可以顯著提高包下載速度&#xff…

PCIe—TS1/TS2 之Polling.Active(一)

前文 訓練序列有序集用于比特對齊、符號對齊以及交換物理層參數。2.5GT/s和5GT/s速率時&#xff0c;訓練序列有序集不會加擾&#xff0c;只用8b/10b 編碼。但到8GT/s及以上速率時&#xff0c;采用128b/130b編碼&#xff0c;符號有可能加擾有可能不加擾&#xff0c;具體…

【HarmonyOS Next之旅】DevEco Studio使用指南(二十八) -> 開發云對象

目錄 1 -> 開發流程 2 -> 創建云對象 3 -> 開發云對象 4 -> 調試云對象 4.1 -> 前提條件 4.2 -> 通過本地調用方式調試云對象 4.3 -> 通過遠程調用方式調試云對象 5 -> 部署云對象 1 -> 開發流程 除去傳統的云函數&#xff0c;您還可在端云…

基于51單片機的音樂盒汽車喇叭調音量proteus仿真

地址&#xff1a; https://pan.baidu.com/s/1l3CSSMi4uMV5-XLefnKoSg 提取碼&#xff1a;1234 仿真圖&#xff1a; 芯片/模塊的特點&#xff1a; AT89C52/AT89C51簡介&#xff1a; AT89C51 是一款常用的 8 位單片機&#xff0c;由 Atmel 公司&#xff08;現已被 Microchip 收…

實驗設計與分析(第6版,Montgomery)第5章析因設計引導5.7節思考題5.8 R語言解題

本文是實驗設計與分析&#xff08;第6版&#xff0c;Montgomery著&#xff0c;傅玨生譯) 第5章析因設計引導5.7節思考題5.8 R語言解題。主要涉及方差分析&#xff0c;正態假設檢驗&#xff0c;殘差分析&#xff0c;交互作用圖。 (a) dataframe<-data.frame( Lightc(580,568…

[藍橋杯]分考場

題目描述 nn 個人參加某項特殊考試。 為了公平&#xff0c;要求任何兩個認識的人不能分在同一個考場。 求是少需要分幾個考場才能滿足條件。 輸入描述 輸入格式&#xff1a; 第一行&#xff0c;一個整數 nn (1≤n≤1001≤n≤100)&#xff0c;表示參加考試的人數。 第二行…

C++: STL簡介與string類核心技術解析及其模擬實現

目錄: 一.STL二.string類一、創建對象的6種構造方式二、常用接口解析1. 容量操作2. 元素訪問3. 修改操作4. 字符串操作 三.string模擬實現一、設計基礎&#xff1a;類結構與資源管理二、拷貝控制&#xff1a;深拷貝的三種實現1. 傳統深拷貝2. 現代寫法&#xff08;推薦&#xf…

Python進階【四】:XML和JSON文件處理

Python提供了多種處理XML和JSON文件的方式&#xff0c;讓我們來看看最常用的方法。 一、處理JSON文件 JSON在Python中處理起來非常簡單&#xff0c;因為它的結構與Python的字典(dict)和列表(list)幾乎一致。 常用模塊&#xff1a;json模塊 優點&#xff1a;Python標準庫自帶…

Golang | 搜索哨兵-對接分布式gRPC服務

哨兵&#xff08;centennial&#xff09;負責接待客人&#xff0c;直接與調用方對接。哨兵的核心組件包括service HUB和connection pool。service HUB用于與服務中心通信&#xff0c;獲取可提供服務的節點信息。connection pool用于緩存與index worker的連接&#xff0c;避免每…

CSS3實現的賬號密碼輸入框提示效果

以下是通過CSS3實現輸入框提示效果的常用方法&#xff0c;包含浮動標簽和動態提示兩種經典實現方案&#xff1a; 一、浮動標簽效果 <div class"input-group"><input type"text" required><label>用戶名</label> </div><…

maven編譯時跳過test過程

如果代碼里有無法在打包環境中測試的部分&#xff0c;則直接運行mvn clean package&#xff0c;因為測試失敗&#xff0c;會導致打包失敗。目前有兩種方式可以跳過測試&#xff1a; 1. mvn clean package -DskipTests&#xff0c;這會跳過執行階須&#xff0c;但仍會生成測試所…

美業+智能體,解鎖行業轉化新密碼(2/6)

摘要&#xff1a;中國美業市場近年蓬勃發展&#xff0c;規模持續擴大&#xff0c;預計不久將突破萬億級別&#xff0c;但同時也面臨著諸多挑戰&#xff0c;如獲客成本攀升、服務質量不穩定、難以滿足消費者多元化個性化需求等。智能體技術的出現為美業帶來了新的發展機遇&#…

設計模式——責任鏈設計模式(行為型)

摘要 責任鏈設計模式是一種行為型設計模式&#xff0c;旨在將請求的發送者與接收者解耦&#xff0c;通過多個處理器對象按鏈式結構依次處理請求&#xff0c;直到某個處理器處理為止。它包含抽象處理者、具體處理者和客戶端等核心角色。該模式適用于多個對象可能處理請求的場景…

react/vue移動端項目,刷新頁面404的原因以及解決辦法

一 、 項目 移動端 二、背景 1、問題描述&#xff1a;react/vue移動端項目&#xff0c;正常的頁面操作跳轉&#xff0c;不會出現404的問題&#xff0c;但是一旦刷新&#xff0c;就會出現404報錯 2、產生原因&#xff1a; React Router是客戶端的路由&#xff0c;當再次刷新時…

數據結構-算法學習C++(入門)

目錄 03二進制和位運算04 選擇、冒泡、插入排序05 對數器06 二分搜索07 時間復雜度和空間復雜度08 算法和數據結構09 單雙鏈表09.1單雙鏈表及反轉09.2合并鏈表09.2兩數相加09.2分隔鏈表 013隊列、棧、環形隊列013.1隊列013.2棧013.3循環隊列 014棧-隊列的相互轉換014.1用棧實現…

用JS實現植物大戰僵尸(前端作業)

1. 先搭架子 整體效果&#xff1a; 點擊開始后進入主場景 左側是植物卡片 右上角是游戲的開始和暫停鍵 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevic…

深入理解設計模式之代理模式

深入理解設計模式之&#xff1a;代理模式 一、什么是代理模式&#xff1f; 代理模式&#xff08;Proxy Pattern&#xff09;是一種結構型設計模式。它為其他對象提供一種代理以控制對這個對象的訪問。代理對象在客戶端和目標對象之間起到中介作用&#xff0c;可以在不改變目標…

Ubuntu設置之初始化

安裝SSH服務 # 安裝 OpenSSH Server sudo apt update sudo apt install -y openssh-server# 檢查 SSH 服務狀態 sudo systemctl status ssh # Active: active (running) since Sat 2025-05-31 17:13:07 CST; 6s ago# 重啟服務 sudo systemctl restart ssh自定義分辨率 新…

【仿生機器人】極具前瞻性的架構——認知-情感-記憶“三位一體的仿生機器人系統架構

基于您的深度需求分析&#xff0c;我將為您設計一個全新的"認知-情感-記憶"三位一體的仿生機器人系統架構。以下是經過深度優化的解決方案&#xff1a; 一、核心架構升級&#xff08;三體認知架構&#xff09; 采用量子糾纏式架構設計&#xff1a; 認知三角&#xf…

Python量化交易12——Tushare全面獲取各種經濟金融數據

兩年前寫過Tushare的簡單使用&#xff1a; Python量化交易08——利用Tushare獲取日K數據_skshare- 現在更新一下吧&#xff0c;這兩年用過不少的金融數據庫&#xff0c;akshare&#xff0c;baostock&#xff0c;雅虎的&#xff0c;pd自帶的......發現還是Tushare最穩定最好用&…