RabbitMQ簡單介紹和安裝

RabbitMQ簡單介紹

  • 一.RabbitMQ介紹
  • 二.RabbitMQ的作用
    • 1.異步解耦
    • 2.流量削峰
    • 3.消息分發
    • 4.延遲通知
  • 三.RabbitMQ安裝(Ubuntu)
    • 1.先安裝Erlang
    • 2.安裝RabbitMQ
    • 3.安裝RabbitMQ的管理界面
    • 4.創建虛擬機
    • 5.端口號信息
  • 四.工作原理圖

一.RabbitMQ介紹

RabbitMQ 是一款開源的 消息中間件(Message Broker),遵循 AMQP(Advanced Message Queuing Protocol) 協議標準,專為分布式系統提供高效、可靠的消息通信機制。它通過解耦生產者和消費者、異步處理、流量削峰等能力,成為構建復雜企業級應用的核心組件之一。

RabbitMQ通常用于通信系統通信,系統通信又分為兩種:

  • 同步通信:直接調用對方的服務,數據從一端發出后立即就可以達到另一端。
    在這里插入圖片描述

  • 異步通信:數據從一端發出后,先進入一個容器進行臨時存儲,當達到某種條件后,再由這個容器發送給另一端(容器的一個具體實現就是MQ)在這里插入圖片描述

二.RabbitMQ的作用

MQ主要工作是接受并轉發消息,在不同的應用場景下,可以展現不同的作用。

1.異步解耦

異步:生產者(發送消息的一方)和消費者(接收消息的一方)無需在同一時間點進行交互。生產者發送消息后即可繼續執行后續邏輯,無需等待消費者處理完成。

解耦:生產者和消費者之間不直接依賴對方的接口或狀態,而是通過消息隊列間接通信。雙方只需遵循消息協議,無需了解彼此的實現細節。

簡單的舉個栗子:
用戶進行注冊操作時,在這里分成3個步驟,第1個步驟是用戶的信息校驗,第2個步驟插入數據庫,第3個步驟發送郵件。此時前兩步已經完成了用戶注冊操作了,此時第三步就能夠解耦出來,將第3步發送給MQ,再讓MQ 將信息轉發給用戶的郵箱。

理解:
用戶在前兩步已經完成注冊了,無論郵件是否能夠到達用戶的郵箱其實都不太重要,重要的是將用戶注冊的這個信息存入服務器的數據庫當中。

2.流量削峰

流量削峰是 RabbitMQ 的核心應用場景之一,主要用于應對系統突發的高并發請求,避免后端服務因瞬時壓力過大而崩潰。其核心思想是通過消息隊列暫存請求,讓后端服務按照自身處理能力逐步消費。

簡單的舉個栗子:
當在搶火車票時,點擊火車票后提交訂單,此時會出現正在排隊中請勿退出界面這種彈窗,這種排隊就是在使用流量削峰的功能。

3.消息分發

消息分發是 RabbitMQ 的核心能力,它決定了消息如何從生產者傳遞到消費者。其核心邏輯是:生產者將消息發送到交換機(Exchange),交換機根據規則(路由鍵、綁定關系)將消息路由到隊列,消費者從隊列中獲取消息。

簡單的舉個栗子:
用戶下了一個訂單之后,平臺需要向商家發送一個信息,也需要向平臺的財部門發送信息,此時不使用MQ的消息分發就只能通過分別調用兩個接口來進行消息的通知,并且還可能會涉及到輪詢數據庫的操作。

4.延遲通知

延遲通知是 RabbitMQ 中實現 定時任務 或 延遲觸發業務邏輯 的核心功能,例如訂單超時未支付自動取消、提醒消息延遲發送等。由于 RabbitMQ 本身不直接支持延遲隊列,需通過 插件 或 死信隊列(DLX) 間接實現。

簡單舉個栗子:
電商平臺,用戶下了訂單之后,如果此時并沒有對這個訂單進行支付,此時就會有一個時間限制,如果超過這個時間限制,用戶還沒有對這個訂單進行付款,此時這個訂單就會自動取消。

三.RabbitMQ安裝(Ubuntu)

1.先安裝Erlang

首先先進行資源包的更新:sudo apt-get update

安裝erlang的語言:sudo apt-get install erlang

檢查erlang是否安裝成功:erl

如果出現這個就是安裝成功,并且通過 halt(). 進行退出,注意是有一個小點在這里插入圖片描述

2.安裝RabbitMQ

安裝RabbitMQ命令:sudo apt-get install rabbitmq-server

確認安裝結果的命令:systemctl status rabbitmq-server
在這里插入圖片描述

3.安裝RabbitMQ的管理界面

安裝管理界面的命令 rabbitmq-plugins enable rabbitmq_management

若服務器未啟動,則啟動命令 sudo service rabbitmq-server start

通過IP和port進行訪問 公網IP + 15672進行訪問,如果不行需要在云服務器上加安全組開放端口:在這里插入圖片描述

rabbitmq從3.3.0開始禁?使?guest/guest權限通過除localhost外的訪問
在這里插入圖片描述

添加管理員用戶:

rabbitmqctl add_user ${賬號} ${密碼}

rabbitmqctl add_user admin(賬號) admin(密碼)

在這里插入圖片描述

給用戶添加權限:

rabbitmqctl set_user_tags ${賬號} ${??名稱}

rabbitmqctl set_user_tags admin administrator
在這里插入圖片描述

權限:
1.Administrator超級管理員,可登陸管理控制臺(啟?managementplugin的情況下),可查看所有的信息,并且可以對??,策略(policy)進?操作
2. Monitoring監控者,可登陸管理控制臺(啟?managementplugin的情況下),同時可以查看rabbitmq節點的相關信息(進程數,內存使?情況,磁盤使?情況等)。
3. Policymaker策略制定者,可登陸管理控制臺(啟?managementplugin的情況下),同時可以對policy進?管理。但?法查看節點的相關信息.
4. Management普通管理者,僅可登陸管理控制臺(啟?managementplugin的情況下),?法看到節點信息,也?法對策略進?管理.
5. Impersonator模擬者,?法登錄管理控制臺。
6. None其他??,?法登陸管理控制臺,通常就是普通的?產者和消費者。

登錄后的界面:
在這里插入圖片描述

紅色區域是可以點擊來修改當前賬號的管理權限等信息:
在這里插入圖片描述

Add User則是可以添加新的賬號和密碼
在這里插入圖片描述

4.創建虛擬機

在這里插入圖片描述
進行添加一個新的虛擬機:在這里插入圖片描述
當前登錄的用戶是哪個,這個虛擬機的權限就是哪個用戶的,通過點擊Name可以進行刪除:
在這里插入圖片描述
在這里插入圖片描述

可以通過用戶來進行設置虛擬機權限:
在這里插入圖片描述

在這里插入圖片描述
或者通過虛擬機進行設置用戶權限,clear是情況用戶權限:在這里插入圖片描述

5.端口號信息

amqp 5672:客戶端和服務器建立連接的端口號

Http 15672:管理界面的端口號

clustering 25672:集群使用的端口號

在這里插入圖片描述

四.工作原理圖

producer : 生產者(客戶端)

consumer: 消費者(客戶端)

中間的都是RabbitMQ的服務器

生產者和消費者通過Connection和RabbitMQ服務器進行連接。
在這里插入圖片描述

一個Connection有多個Channel,一個Broker可以有多個虛擬機,Exchange是交換機,Queue是隊列。

生產者將消息發送給Exchange(交換機),而不會直接發送給Queue(隊列)。
在這里插入圖片描述在這里插入圖片描述
在這里插入圖片描述

在這里插入圖片描述

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

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

相關文章

匯編學習之《call, return指令》

call 指令 call 指令就是調用函數的執行,不過它也是幾個指令的組合 第一步通過jmp 函數地址的方式先跳轉到函數 第二步通過push 指令將函數地址指令額下一行的指令的地址壓入棧中。 我們來驗證下 首先打開OllyDbg,導入你的程序,找到一個call 函數&…

接口自動化學習三:參數化parameterize

使用parametrize之前: def add(x,y):return xy class TestAddFunction(object):def test01(self):resadd(2,4)assert 6resdef test02(self):resadd(4,6)assert 10resparametrize參數化之后: import pytest def add(x,y):return xydata[(10,20,30),(200…

全面解析 Mybatis 與 Mybatis-Plus:深入原理、實踐案例與高級特性對比

全面解析 Mybatis 與 Mybatis-Plus:深入原理、實踐案例與高級特性對比 🚀 前言一、基礎介紹 ?1. Mybatis 簡介 🔍2. Mybatis-Plus 簡介 ? 二、核心區別與高級特性對比 🔎1. 開發模式與配置管理2. 功能豐富度與擴展性3. 自動填充…

【區塊鏈安全 | 第十九篇】類型之映射類型

文章目錄 映射類型可迭代映射 映射類型 映射類型使用語法 mapping(KeyType KeyName? > ValueType ValueName?),映射類型的變量聲明使用語法 mapping(KeyType KeyName? > ValueType ValueName?) VariableName。 KeyType 可以是任何內置值類型、bytes、st…

動態循環表單+動態判斷表單類型+動態判斷表單是否必填方法

頁面效果: 接口請求到的數據格式: list: [{demandType: "設備輔助功能要求",demandSettingList: [{id: "1907384788664963074",name: "測試表單",fieldType: 0,contentValue: "",vaildStatus: 0, // 0 非必填&a…

藍橋杯DFS算法題(java)

最大連通 鏈接: https://www.lanqiao.cn/problems/2410/learning/ 問題描述 小藍有一個 30 行 60 列的數字矩陣,矩陣中的每個數都是 0 或 1 。 1100100000111111101010010010011010101110110110111010011111100100000000010100011011000000100101100011…

解鎖物種分布模擬新技能:MaxEnt 模型與 R 語言的奇妙融合

技術點目錄 第二章、常用數據檢索與R語言自動化下載及可視化方法第三章、R語言數據清洗與特征變量篩選第四章、基于ArcGIS、R數據處理與進階第五章、基于Maxent的物種分布建模與預測第六章、基于R語言的模型參數優化第七章、物種分布模型結果分析與論文寫作 —————————…

三軸云臺之相機技術篇

一、結構設計 三軸云臺通常由空間上三個互相垂直的框架構成,包括內框(俯仰框)、中框(方位框)和外框(橫滾框)。這些框架分別負責控制相機的俯仰運動、方位運動和橫滾運動,從而實現對目…

全文 - MLIR Toy Tutorial Chapter 3 :高層次上語言特定的分析和變換

使用 C 風格的模式匹配和重寫來優化轉置運算 使用 DRR 優化 reshape 運算 創建一種貼近輸入語言的語義表示的方言,可以在 MLIR 中分析、變換和優化,這些過程中需要用到高級語言的信息,而且通常是在語言的 AST 上執行的這些過程。…

js逆向入門圖靈爬蟲練習平臺 第四題學習

(base64解碼)地址:aHR0cHM6Ly9zdHUudHVsaW5ncHl0b24uY24vcHJvYmxlbS1kZXRhaWwvNC8 先找到請求接口帶有加密參數: 全局搜索Sign,找到參數生成位置 看到這就一目了然塞,知道參數是怎么構造生成的,不知道這段 JavaScript 代碼沒關系…

【Flask開發】嘿馬文學web完整flask項目第2篇:2.用戶認證,Json Web Token(JWT)【附代碼文檔】

教程總體簡介:2. 目標 1.1產品與開發 1.2環境配置 1.3 運行方式 1.4目錄說明 1.5數據庫設計 2.用戶認證 Json Web Token(JWT) 3.書架 4.1分類列表 5.搜索 5.3搜索-精準&高匹配&推薦 6.小說 6.4推薦-同類熱門推薦 7.瀏覽記錄 8.1配置-閱讀偏好 8.配置 9.1項目…

[dp5_多狀態dp] 按摩師 | 打家劫舍 II | 刪除并獲得點數 | 粉刷房子

目錄 1.面試題 17.16. 按摩師 題解 2.打家劫舍 II 題解 3.刪除并獲得點數 題解 4.粉刷房子 題解 一定要有這樣的能力,碰到一個新題的時候,可以往之前做過的題方向靠! 打家劫舍問題模型: 不能選擇相鄰的兩個數,并且要最終…

基于javaweb的SSM羽毛球會員俱樂部系統場館課程運動設計與實現(源碼+文檔+部署講解)

技術范圍:SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、Python、爬蟲、數據可視化、小程序、安卓app、大數據、物聯網、機器學習等設計與開發。 主要內容:免費功能設計、開題報告、任務書、中期檢查PPT、系統功能實現、代碼編寫、論文編寫和輔導、論文…

windows下git bash安裝SDKMan報錯Looking for unzip...Not found

需要在jdk8和jdk17兩個版本切換。最簡單的是通過手動切換,但切換過程太繁瑣,修改環境變量,達到切換目的。于是嘗試其它解決方案,最終確實使用sdkman工具。 確保安裝了git Git - Downloading Package 記住安裝的路徑,…

rnn的音頻降噪背后技術原理

rnniose: 這個演示展示了 RNNoise 項目,說明了如何將深度學習應用于噪聲抑制。其核心理念是將經典的信號處理方法與深度學習結合,打造一個小巧、快速的實時噪聲抑制算法。它不需要昂貴的 GPU —— 在樹莓派上就能輕松運行。 相比傳統的噪聲抑制系統&…

劍指Offer(數據結構與算法面試題精講)C++版——day3

劍指Offer(數據結構與算法面試題精講)C版——day3 題目一:數組中和為0的3個數字題目二:和大于或等于k的最短子數組題目三:乘積小于k的子數組 題目一:數組中和為0的3個數字 前面我們提到,在一個排…

全新UI好看404頁面源碼

源碼介紹 全新UI好看404頁面源碼,源碼由HTMLCSSJS組成,記事本打開源碼文件可以進行內容文字之類的修改,雙擊html文件可以本地運行 效果預覽 源碼獲取 全新UI好看404頁面源碼

遞歸典例---漢諾塔

https://ybt.ssoier.cn/problem_show.php?pid1205 #include<bits/stdc.h> #define endl \n #define pii pair<int,int>using namespace std; using ll long long;void move(int n,char a,char b,char c) // n 個盤子&#xff0c;通過 b&#xff0c;從 a 移動到 …

php的高速緩存

部署方法 在我們安裝的nginx中默認不支持memc和srcache功能&#xff0c;需要借助第三方模塊來讓nginx支持此功能。 tar zxf srcache-nginx-module-0.33.tar.gz tar zxf memc-nginx-module-0.20.tar.gz 下載這倆個模塊&#xff0c;然后編譯安裝的時候加進去 編譯安裝完成之后…

視頻設備軌跡回放平臺EasyCVR打造視頻智能融合新平臺,驅動智慧機場邁向數字新時代

一、行業背景? 隨著 5G、AI、物聯網、大數據等前沿技術的不斷更新換代&#xff0c;交通行業進入數字化轉型的高速發展時期。航空業作為交通領域的重要部分&#xff0c;數字化進程從追求速度往注重質量的轉變。但機場在數字化轉型中面臨許多嚴峻挑戰&#xff0c;如現有運營模式…