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(隊列)。