RabbitMQ的簡介

三個概念

  1. 生產者:生產消息的服務
  2. 消息代理:消息中間件,如RabbitMQ
  3. 消費者:獲取使用消息的服務

消息隊列到達消費者的兩種形式

  1. 隊列(queue):點對點消息通信(point-to-point)

    消息進入隊列,消費者監聽隊列,一旦有消息則獲取消息,消息被獲取后移除隊列。
    隊列可以被多個消費者監聽,但是只有一個可以獲取。

  2. 主題(topic):發布(publish)/訂閱(subscribe)消息通信|

    發布者(生產者)發送消息到主題,多個訂閱者(消費者)訂閱(監聽)這個主題,則在消息到達的同時就會同時得到消息

在這里插入圖片描述

兩種常見的消息中間件協議

  1. JMA:(Java Message Servier) Java 消息服務
    -基于JVM消息代理規范。ActiveMQ、HornetMQ是JMS實現

  2. AMQP:(Advanced Message Queuing Protocol)
    -高級消息隊列協議,兼容JMS
    -RabbitMQ是AMOP的實現。

    主要區別JMSAMOP
    跨語言
    跨平臺
    model1) point-to-point 點對點
    2)topic 主題
    1)direct exchange(直接交換機)—點對點
    2)fanout exchange
    3)topic exchange

交換機類型

direct(直接)、fanout(扇出)、topic(主題)、headers

direct

路由鍵需要與binding全匹配才行

在這里插入圖片描述

fanout–廣播模式

不處理綁定和路由鍵,收到消息直接全部發送,類似廣播

在這里插入圖片描述

topic

需要綁定關系(binding)和路由鍵(routing key)按一定規則匹配,路由鍵和綁定關系分割成單詞,單詞間用".“隔開。同時會識別兩個通配符”#“和”*“。”#"匹配0個或多個單詞 "*"匹配一個單詞

在這里插入圖片描述

RabbitMQ的執行流程

生產者:建立一個長連接,通過連接里面的信道發送消息-指定哪一個交換機。

消息message:頭+體:消息頭中有一個很重要的路由鍵 (Routing Key)

RabbitMQ:消息到達中間件,服務器會交給交換機(exchange),交換機會根據消息中的路由鍵(routing key)去尋找對應的綁定關系(binding),然后消息入隊。

**消費者:**建立一個長連接,每個長連接會有很多信道。每個信道用來監聽隊列

在這里插入圖片描述

消息確認機制

confirmCallback:消息達到消息服務(broker),就會執行。集群模式下,要被所有的代理都接受到才會執行。

returnCallback:交換機到隊列投遞失敗后執行。

ack:消費者獲取消息后自動確認,服務端會刪除這個消息。需改為手動確認。否則宕機后會消息丟失。調用channel.basicAck()方法簽收

在這里插入圖片描述

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

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

相關文章

自動切換剪貼板路徑中反斜杠為正斜杠

有時候需要將我們常見的win全路徑中反斜杠為正斜杠,每次用記事本,編輯替換非常麻煩,于是寫了這個工具,能自動修改剪貼板中的數據,只需要運行一下即可。 實現效果,將類似于下面的路徑: C:\User…

【時時三省】Python 語言----文件

目錄 1,文件打開 2, 文件關閉 3, 文件寫入 4, 文件讀出 5, 文件定位 6, 文件重命名 7, 復制文件 山不在高,有仙則名。水不在深,有龍則靈。 ----CSDN 時時三省 1,文件打開 file = open(file, mode, buffering, encoding, errors, newline, closefd, opener) 2, 文…

React 個人筆記 Hooks編程

作用 配合函數式編程,保證在不產生類的時候完成一個整體的組件 常用組件 useStateuseContextuseReduceruseEffectuseMemouseCallback 前三個值為自變量 后三者為因變量 前三者相當于其他編程函數的變量聲明,而后三者相當于對變量進行了(if now ! pr…

logits是啥、傅里葉變換

什么是logtis? 在深度學習的上下文中,logits 就是一個向量,下一步通常被投給 softmax/sigmoid 的向量。。 softmax的輸出是分類任務的概率,其輸入是logits層。 logits層通常產生-infinity到 infinity的值,而softmax層…

Adobe Illustrator學習備忘

1.移動畫板:需按住空格鍵加鼠標一塊才能拖動 2.放大縮小畫板:按住Alt鍵加鼠標滾輪 3.撤回:CtrlZ 4.鋼筆練習網站:The Bzier Game

【初識】內網滲透——基礎概念,基本工具使用

目錄 一、域,工作組,域控制器,活動目錄相關概念: 域環境: 工作組: 域控制器DC: 活動目錄AD: 二、內網的基本場景: 三、內網滲透基本測試方案: #案例1一基本信…

remove_const的工作原理及c++的類型推導

author: hjjdebug date: 2025年 05月 21日 星期三 12:51:57 CST descrip: remove_const的工作原理及c的類型推導 文章目錄 1. 簡單的程序代碼.2.std::remove_const_t 到底是怎樣工作的?2.1 測試代碼2.2 類型推導的調試手段.2.2.1 給類模板添加成員函數,讓它打印信息…

人臉識別,使用 deepface + api + flask, 改寫 + 調試

1. 起因, 目的, 感受: github deepface 這個項目寫的很好, 繼續研究使用這個項目,改寫 api。增加一個前端 flask app 2. 先看效果 3. 過程: 大力改寫原始項目中 api 這部分的代碼, 原始項目的文件結構太繁雜了: 我把…

三維表面輪廓儀的維護保養是確保其長期穩定運行的關鍵

三維表面輪廓儀是一種高精度測量設備,用于非接觸式或接觸式測量物體表面的三維形貌、粗糙度、臺階高度、紋理特征等參數。其主要基于光學原理進行測量。它利用激光或其他光源投射到被測物體表面,通過接收反射光或散射光,結合計算機圖像處理技…

Lambda表達式的高級用法

今天來分享下Java的Lambda表達式,以及它的高級用法。 使用它可以提高代碼的簡潔度,使代碼更優雅。 一、什么是lambda表達式 Lambda 表達式是 Java 8 引入的特性,用于簡化匿名內部類的語法,使代碼更簡潔,尤其在處理函…

31-35【動手學深度學習】深度學習硬件

1. CPU和GPU 1.1 CPU CPU每秒鐘計算的浮點運算數為0.15,GPU為12。GPU的顯存很低,16GB(可能32G封頂),CPU可以一直插內存。 左邊是GPU(只能做些很簡單的游戲,視頻處理),中…

【MySQL成神之路】MySQL常見命令匯總

目錄 MySQL常用命令總結 1. 數據庫操作 2. 表操作 3. 數據操作(DML) 4. 索引與優化 5. 用戶與權限管理 6. 備份與恢復 7. 事務控制 8. 常用函數 9. 系統狀態與日志 總結 MySQL常用命令總結 MySQL作為最流行的關系型數據庫之一,提供…

Dify的大語言模型(LLM) AI 應用開發平臺-本地部署

前言 今天閑著,搗鼓一下 Dify 這個開源平臺,在 mac 系統上,本地部署并運行 Dify 平臺,下面記錄個人在本地部署Dify 的過程。 Dify是什么? Dify是一個開源的大語言模型(LLM)應用開發平臺&#…

【論文閱讀】針對BEV感知的攻擊

Understanding the Robustness of 3D Object Detection with Bird’s-Eye-View Representations in Autonomous Driving 這篇文章是發表在CVPR上的一篇文章,針對基于BEV的目標檢測算法進行了兩類可靠性分析,即惡劣自然條件以及敵對攻擊。同時也提出了一…

SonarQube的核心作用與用途

SonarQube作為一個開源的代碼質量管理平臺,致力于持續分析代碼的健康狀態,幫助開發團隊提升代碼質量。以下是其核心作用與用途的詳細說明: 1、靜態代碼分析 SonarQube通過靜態代碼分析技術,自動識別代碼中的潛在問題。它能夠檢測…

AI工程師系列——面向copilot編程

前言 ? 筆者已經使用copilot協助開發有一段時間了,但一直沒有總結一個協助代碼開發的案例,特別是怎么問copilot,按照什么順序問,哪些方面可以高效的生成需要的代碼,這一次,筆者以IP解析需求為例,沉淀一個實踐案例,供大家參考 當然,其實也不局限于copilot本身,類似…

【軟件設計師】知識點簡單整理

文章目錄 數據結構與算法排序算法圖關鍵路徑 軟件工程決策表耦合類型 編程思想設計模式 計算機網絡域名請求過程 數據結構與算法 排序算法 哪些排序算法是穩定的算法?哪些不是穩定的算法,請舉出例子。 穩定排序算法:冒泡排序、插入排序、歸并排序、基數排序、計數…

FastAPI 支持文件下載和上傳

文章目錄 1. 文件下載處理1.1. 服務端處理1.1.1. 下載小文件1.1.2. 下載大文件(yield 支持預覽的)1.1.3. 下載大文件(bytes)1.1.4. 提供靜態文件服務1.1.5. 中文文件名錯誤 1.2. 客戶端處理1.2.1. 普通下載1.2.2. 分塊下載1.2.3. …

naive-ui切換主題

1、在App.vue文件中使用 <script setup lang"ts"> import Dashboard from ./views/dashboard/index.vue import { NConfigProvider, NGlobalStyle, darkTheme } from naive-ui import { useThemeStore } from "./store/theme"; // 獲取存儲的主題類…

Kotlin 協程 (三)

協程通信是協程之間進行數據交換和同步的關鍵機制。Kotlin 協程提供了多種通信方式&#xff0c;使得協程能夠高效、安全地進行交互。以下是對協程通信的詳細講解&#xff0c;包括常見的通信原語、使用場景和示例代碼。 1.1 Channel 定義&#xff1a;Channel 是一個消息隊列&a…