RabbitMQ 初步認識

目錄

1. 基本概念

2. RabbitMq 的工作流程

3. 協議

4. 簡單的生產者, 消費者模型

4.1 我們先引入 rabbitmq 的依賴

4.2 生產者

4.3 消費者


1. 基本概念

  • Pruducer : 生產者, 產生消息
  • Consumer : 消費者, 消費消息
  • Broker : RabbitMq Server, 用來接收和發送消息
  • Connection : 是客戶端和服務端的?tcp 連接, 負責傳輸客戶端和服務端之間的所有數據和控制信息
  • Channel : 通道, 一個 Connection 可以有多個通道, 主要作用是將消息的讀寫操作復用到同一個 tcp 連接上, 這樣可以減少建立和關閉連接的開銷, 提高性能
  • Exchange : 交換機, 將消息路由到對應的 Queue
  • Queue : 隊列, RabbitMq 中用來存放消息的內部對象
  • BindingKEy (PoutingKey) :? 生產者在發送消息時, 會發送一個 BindingKey, 用來匹配交換機, 交換機與隊列之間的綁定也是通過 BindingKey 實現的, 一個交換機可以綁定多個隊列, 統一交換機可以與不同的隊列進行綁定, 使用的 BindingKey 是不同的
  • Virtual host : 虛擬主機, 為消息隊列提供了邏輯上的隔離機制?

2. RabbitMq 的工作流程

  1. Producer 生產了一條消息
  2. Producer 連接到 RabbitMq Broker, 建立一個連接(Connection), 開啟一個信道(Channel)
  3. Producer 聲明一個交換機(Exchange), 路由信息
  4. Producer 聲明一個隊列(Queue), 存放信息
  5. Producer 發送消息至 RabbitMq?Broker
  6. RabbitMq Broker 接收消息, 并存入響應的隊列(Queue)中, 如果未找到相對應的隊列, 則根據生產者的配置, 選擇丟棄或者回退給生產者

3. 協議

  • 使用 AMQP 協議, 是一種高級消息隊列協議, AMQP 定義了一套確定的消息交換功能, 包括交換器(Exchange), 隊列(Queue)等. 這些組件共同工作, 使得生產者能夠將消息發送到交換器. 然后由隊列接收并等待消費者接收. AMQP還定義了一個網絡協議, 允許客戶端應用通過該協議與消息代理和 AMQP 模型進行交互通信

4. 簡單的生產者, 消費者模型

4.1 我們先引入 rabbitmq 的依賴

4.2 生產者

4.3 消費者

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

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

相關文章

Redis(46) 如何搭建Redis哨兵?

搭建 Redis 哨兵(Sentinel)集群,確保 Redis 服務具有高可用性。以下是詳細的步驟,從 Redis 安裝、配置主從復制到配置和啟動 Sentinel 集群,并結合相關的代碼示例。 步驟 1:安裝 Redis 首先,需要…

Grafana 多指標相乘

PromQL中多指標相乘 PromQL表達式: 0.045 * h9_daily_income{coin"nock"} * h9_pool_price_cny{coin"nock"}📈 基礎:單指標運算 常數與指標相乘 在PromQL中,常數與指標的乘法是最簡單的運算: # ?…

【微服務】springboot3 集成 Flink CDC 1.17 實現mysql數據同步

目錄 一、前言 二、常用的數據同步解決方案 2.1 為什么需要數據同步 2.2 常用的數據同步方案 2.2.1 Debezium 2.2.2 DataX 2.2.3 Canal 2.2.4 Sqoop 2.2.5 Kettle 2.2.6 Flink CDC 三、Flink CDC介紹 3.1 Flink CDC 概述 3.1.1 Flink CDC 工作原理 3.2 Flink CDC…

分布式數據架構

分布式數據架構是一種將數據分散存儲在多臺獨立計算機(節點)上,并通過網絡協調工作的系統設計。其核心目標是解決海量數據處理、高并發訪問、高可用性及可擴展性等傳統集中式數據庫難以應對的挑戰。以下是關鍵要點解析:一、核心原…

Spark 中spark.implicits._ 中的 toDF和DataFrame 類本身的 toDF 方法

1. spark.implicits._ 中的 toDF(隱式轉換方法)本質這是一個隱式轉換(implicit conversion),通過 import spark.implicits._ 被引入到作用域中。它的作用是為本地 Scala 集合(如 Seq, List, Array 等&#…

如何在MacOS上卸載并且重新安裝Homebrew

Homebrew是一款針對macOS操作系統的包管理工具,它允許用戶通過命令行界面輕松安裝、升級和管理各種開源軟件包和工具。Homebrew是一個非常流行的工具,用于簡化macOS系統上的軟件安裝和管理過程。一、卸載 Homebrew方法1:官方卸載腳本&#xf…

如何簡單理解狀態機、流程圖和時序圖

狀態機、流程圖和時序圖都是軟件工程中用來描述系統行為的工具,但它們像不同的“眼鏡”一樣,幫助我們從不同角度看問題。下面用生活比喻來簡單理解思路:狀態機:想象一個交通信號燈。它總是在“紅燈”“黃燈”“綠燈”這些狀態之間…

消失的6個月!

已經6個月沒有更新了 四個月的研一下生活 兩個月暑假,哈哈,其實也沒閑著。每天都有好好的學習,每天學習時長6h 暑假按照導師的指示開始搞項目了,項目是關于RAG那塊中的應用場景,簡單來說就是deepseek puls ,使用大…

Android開發——初步學習Activity:什么是Activity

Android開發——初步學習Activity:什么是Activity ? 在 Android 中,Activity 是一個用于展示用戶界面的組件。每個 Activity 通常對應應用中的一個屏幕,例如主界面、設置界面或詳情頁。Activity 負責處理用戶的輸入事件,更新 UI&…

【左程云算法03】對數器算法和數據結構大致分類

目錄 對數器的實現 代碼實現與解析 1. 隨機樣本生成器 (randomArray) 2. 核心驅動邏輯 (main 方法) 3. 輔助函數 (copyArray 和 sameArray) 對數器的威力 算法和數據結構簡介?編輯 1. 硬計算類算法 (Hard Computing) 2. 軟計算類算法 (Soft Computing) 核心觀點 一個…

MATLAB | 繪圖復刻(二十三)| Nature同款雷達圖

Hello 真的好久不見,這期畫一個Nature同款雷達圖,原圖是下圖中的i圖,長這樣: 本圖出自: Pan, X., Li, X., Dong, L. et al. Tumour vasculature at single-cell resolution. Nature 632, 429–436 (2024). https://d…

React Hooks UseCallback

開發環境:React Native Taro TypescriptuseCallback的用途,主要用于性能優化:1 避免不必要的子組件重渲染:當父組件重渲染時,如果傳遞給子組件的函數每次都是新創建的,即使子組件使用了 React.memo&#…

使用SD為VFX制作貼圖

1.制作遮罩 Gradient Linear 1 通過Blend 可以混合出不同遮罩 2.徑向漸變 Shape 節點 , 非常常用 色階調節灰度和漸變過渡 曲線能更細致調節灰度 色階還可以反向 和圓盤混合 就是 菲涅爾Fresnel 3. 屏幕后處理漸變 第二種方法 4. 極坐標 Gradient Circular Threshold 閾值節…

面經分享二:Kafka、RabbitMQ 、RocketMQ 這三中消息中間件實現原理、區別與適用場景

一、實現原理 (Implementation Principle) 1. Apache Kafka:分布式提交日志 (Distributed Commit Log) Kafka 的核心設計理念是作為一個分布式、高吞吐量的提交日志系統。它不追求消息的復雜路由,而是追求數據的快速、持久化流動。 存儲結構:…

Android開發——初步了解AndroidManifest.xml

Android開發——初步了解AndroidManifest.xml ? AndroidManifest.xml 是 Android 應用的清單文件,包含了應用的包名、組件聲明、權限聲明、API 版本信息等。它是 Android 應用的“說明書”,系統通過它了解應用的結構和行為。咱們的AndroidManifest文件實…

ecplise配置maven插件

1.下載maven 2.配置系統變量 MAVEN_HOME: E:\CODE\MAVEN\apache-maven-3.0.4 3.配置環境變量 %MAVEN_HOME%\bin 4.cmd:mvn -version 注1 如圖所示為:成功 注1:配置成功的前提是要有配置JAVA_HOME,如果沒有配置,則…

Vue 項目性能優化實戰

性能優化有一套「發現 → 定位 → 解決」的閉環方法論。本文以真實項目為藍本,從編碼階段到上線監控,給出一條可落地的 Vue 性能優化路線圖。 一、量化指標定位性能瓶頸 任何優化之前先用量化證據鎖死問題。 Lighthouse 一鍵跑分:首屏、交互、…

阿里云智能多模態大模型崗三面面經

阿里云智能多模態大模型崗三面面經(詳細問題感受) 最近面試了 阿里云智能集團 - 多模態大模型崗位,三輪技術面,整體體驗還不錯。問題整體偏常規,但對項目的追問比較細致。這里整理一下完整面經,供準備類似崗…

C++ 條件變量 通知 cv.notify_all() 先釋放鎖再通知

簡短的回答是:先釋放鎖,再通知(notify_one 或 notify_all)通常是更優的選擇。 雖然標準允許兩種順序,但“先解鎖,后通知”的性能通常更好。 下面我們來詳細解釋原因和兩種方式的區別。 先通知,后…

案例精選 | 南京交通職業技術學院安全運營服務建設標桿

導語 隨著教育信息化的深入推進,高校已成為數字化轉型的前沿陣地。然而,伴隨著教學、科研、管理等業務系統的全面上云與互聯互通,高校網絡環境日益復雜,面臨的網絡安全威脅也愈發嚴峻。勒索病毒、數據泄露、APT攻擊等安全事件頻發…