1. 引言
??在前一篇文章在centos stream 9環(huán)境中部署和使用rabbitMQ,我們已經(jīng)詳細介紹了如何在CentOS下安裝和配置RabbitMQ,我們不僅啟動了RabbitMQ服務(wù),還通過插件安裝了管理后臺,并且登陸到管理頁面。
??RabbitMQ管理后臺提供了一個直觀的用戶界面,允許我們查看和管理RabbitMQ服務(wù)器的各種方面。包括查看消息隊列狀態(tài),管理交換機,設(shè)置用戶權(quán)限,監(jiān)控服務(wù)器狀態(tài)等等?,F(xiàn)在,我們將開始探索RabbitMQ的管理后臺。
下面是登陸到管理后臺的預(yù)覽頁面:
2. RabbitMQ 管理頁面的概覽
RabbitMQ的管理頁面是一個內(nèi)置的、基于web的用戶界面,允許用戶查看和管理RabbitMQ服務(wù)器的狀態(tài)和行為。
登錄RabbitMQ管理頁面后,會看到以下幾個主要部分:
-
Overview: 這個頁面顯示了RabbitMQ服務(wù)器的一般信息,例如節(jié)點的名字、狀態(tài)、運行時間等。
-
Connections: 在這里,可以查看、管理和關(guān)閉當前所有的TCP連接。
-
Channels: 這個頁面展示了所有當前打開的通道以及它們的詳細信息。
-
Exchanges: 可以在這里查看、創(chuàng)建和刪除交換機。
-
Queues: 這個頁面展示了所有當前的隊列以及它們的詳細信息。
-
Admin: 在這里,可以查看系統(tǒng)中所有的操作用戶。
在接下來的章節(jié)中,我們將詳細介紹這些功能,并通過實際操作例子進行演示。
3. 探索 RabbitMQ 管理頁面的主要功能
在本章節(jié)中,我們將深入探討RabbitMQ管理頁面的主要功能,包括連接、通道、交換機、隊列、生產(chǎn)者和消費者的管理。
3.1 連接
在RabbitMQ的管理頁面中,“Connections” 部分列出了所有當前的TCP連接。每個連接都關(guān)聯(lián)了它的詳細信息,如用戶、主機、運行狀態(tài)等。
3.2 通道
“Channels” 頁面列出了所有當前的通道。通道在RabbitMQ中扮演著重要的角色,所有的消息發(fā)布和接收都是通過通道進行的。
3.3 交換機
在 “Exchanges” 頁面,你可以查看所有的交換機。交換機是RabbitMQ消息路由的重要組成部分,它決定了消息如何被路由到正確的隊列。
3.4 隊列
在 “Queues” 頁面,你可以查看所有當前的隊列。隊列是RabbitMQ的核心,它保存了所有待處理的消息。
3.5 生產(chǎn)者
RabbitMQ管理頁面并沒有一個專門的頁面來顯示所有的生產(chǎn)者,因為生產(chǎn)者在RabbitMQ中是無狀態(tài)的。但是,你可以通過查看 “Exchanges” 頁面來了解消息被發(fā)布的情況。
3.6 消費者
在 “Admin” 頁面,你可以查看所有當前服務(wù)的所有操作用戶,并提供了添加用戶和授予虛擬機的功能等。(右側(cè)還可以切換其他的功能,下面章節(jié)用到的時候會說明)
4. RabbitMQ 的實戰(zhàn)例子
在本章節(jié)中,我將通過實際的操作示例來演示如何使用RabbitMQ管理頁面。
4.1 創(chuàng)建虛擬機
??在RabbitMQ中,虛擬機(Virtual Host)是一種邏輯分區(qū)機制,用于將RabbitMQ資源進行邏輯隔離和管理。每個虛擬機都是一個獨立的消息代理環(huán)境,擁有自己的交換機、隊列、綁定和權(quán)限。
虛擬機提供了一種將應(yīng)用程序或用戶分組和隔離的方式。不同的應(yīng)用程序或用戶可以在各自的虛擬機中操作和管理自己的消息隊列,而不會影響其他虛擬機中的隊列。
每個虛擬機都有一個名稱,通過該名稱可以在連接時指定要使用的虛擬主機。虛擬機名稱以正斜杠(/)作為前綴,例如/v-1
。
打開Admin選項卡,選擇右側(cè)的Virtual Host,展開Add a new virtual host ,帶紅色*的是必填,即虛擬機的名稱,填好點擊Add virtual host即可創(chuàng)建虛擬機。
創(chuàng)建好后會列出虛擬機的狀態(tài)信息:
因為我當前的登陸用戶是 tom,切換到**]Users可以看到自動授予了v-1**虛擬機的權(quán)限
再RabbitMQ中,用戶的操做是需要基于虛擬機授權(quán)的,點擊用戶的名字可以展開權(quán)限操作
另外,創(chuàng)建虛擬機后,還會默認給我們創(chuàng)建了交換機(下面的章節(jié)說明)
4.2 連接和通道
本教程因為不涉及客戶端的操作,所以連接和通道不做介紹,在后面的博客中有專門使用客戶端操作的講解。
4.3 建立交換機
??在RabbitMQ中,交換機(Exchange)是消息路由的中心組件之一。它接收從生產(chǎn)者發(fā)送的消息,并根據(jù)一定的規(guī)則將消息路由到一個或多個隊列,以便消費者可以接收并處理這些消息。
?交換機的主要作用是根據(jù)消息的路由鍵(Routing Key)將消息發(fā)送到合適的隊列。當生產(chǎn)者發(fā)布消息時,會指定一個交換機和一個路由鍵。交換機根據(jù)規(guī)則來確定如何將消息路由到隊列,這些規(guī)則定義了交換機的類型。
4.3.1 交換機類型
RabbitMQ提供了以下幾種常見的交換機類型:
-
Direct(直連交換機):根據(jù)消息的路由鍵精確匹配將消息發(fā)送到指定隊列。當消息的路由鍵與綁定到交換機上的隊列的綁定鍵(Binding Key)完全匹配時,消息會被路由到相應(yīng)的隊列。
-
Fanout(扇形交換機):將消息廣播到所有綁定到交換機的隊列。無需匹配路由鍵,所有隊列都會接收到相同的消息。
-
Topic(主題交換機):根據(jù)通配符匹配將消息路由到隊列。通配符使用特殊符號"#“(表示零個或多個詞)和”*"(表示一個詞)來匹配路由鍵,允許更靈活的路由。
-
Headers(頭交換機):根據(jù)消息的頭部屬性進行匹配路由,而不是使用路由鍵。在Headers交換機中,可以定義一組鍵值對的頭部屬性,并通過匹配這些屬性將消息路由到隊列。
4.3.2 創(chuàng)建一個交換機
??交換機通過綁定(Binding)與隊列進行關(guān)聯(lián)。綁定定義了交換機和隊列之間的關(guān)系,包括交換機、隊列和綁定鍵的組合。生產(chǎn)者發(fā)布消息時,指定的交換機和路由鍵需要與隊列的綁定相匹配,才能將消息正確地路由到相應(yīng)的隊列中。(后面會有介紹根據(jù)不同的類型在不同場景下使用的文章)
??在上面創(chuàng)建虛擬機后會自動給我們創(chuàng)建默認的交換機,我們還可以點擊Add a new exchange進行手動創(chuàng)建(目前管理頁面是無法在創(chuàng)建交換機指定虛擬機的,所以通過頁面創(chuàng)建的都是建立在/虛擬機下)
-
Name(名稱):交換機的唯一標識符,用于在RabbitMQ中識別交換機。名稱是必需的,并且需要是唯一的。
-
Type(類型):指定交換機的類型,決定了交換機的路由策略。常見的交換機類型有Direct、Fanout、Topic和Headers。不同類型的交換機對應(yīng)不同的路由規(guī)則。
-
Durable(持久化):指定交換機是否持久化到磁盤。如果將該參數(shù)設(shè)置為true,交換機將在RabbitMQ服務(wù)器重啟后仍然存在。默認情況下,交換機是非持久化的。
-
Auto-delete(自動刪除):指定交換機在不被使用時是否自動刪除。如果將該參數(shù)設(shè)置為true,當沒有與之綁定的隊列或連接時,交換機將被自動刪除。默認情況下,交換機是不會自動刪除的。
-
Internal(內(nèi)部交換機):指定交換機是否為內(nèi)部交換機。內(nèi)部交換機只能被直接連接到的交換機使用,而無法通過路由鍵綁定到隊列。該參數(shù)為可選參數(shù),用于特定的高級使用場景。
-
Arguments參數(shù)允許在創(chuàng)建交換機時指定一些額外的自定義參數(shù)。這些參數(shù)可以根據(jù)特定的需求來定義交換機的行為和特性。Arguments參數(shù)是一個鍵值對的字典,其中鍵和值的類型可以是字符串、數(shù)字、布爾值等。不同的交換機類型支持不同的參數(shù)。一些常見的Arguments參數(shù)包括:
Alternate Exchange(備用交換機):指定一個備用交換機,當消息無法被路由到任何綁定的隊列時,將消息轉(zhuǎn)發(fā)到備用交換機。這可以提供消息的備份或延遲處理等功能。
Message TTL(消息過期時間):指定消息的生存時間(Time To Live),即消息在交換機中存儲的有效期限。超過該時間的消息將被丟棄或進入死信隊列。
Dead-Letter Exchange(死信交換機):指定一個死信交換機,用于處理無法被消費者成功處理的消息。當消息被拒絕、超過最大重試次數(shù)或過期時,將消息轉(zhuǎn)發(fā)到死信交換機。
Queue Mode(隊列模式):用于定義隊列的模式,例如懶惰隊列(lazy queues)模式,可以在需要時才創(chuàng)建隊列,以減少資源消耗。
x-match:用于Topic交換機,指定如何匹配路由鍵和綁定鍵的模式,可以是任意(any)或全部(all)。
4.4 創(chuàng)建隊列
點擊頁面頂部的 “Queues” 標簽。這會打開一個頁面,顯示當前的所有隊列,目前我們還沒創(chuàng)建,所以all queues是0
4.4.1 隊列類型
在 RabbitMQ 中,隊列的類型主要可以分為以下幾種:
-
Classic 隊列:這是 RabbitMQ 最初的隊列模型。這種隊列類型以可靠和廣泛的方式提供了多種消息交付模式,包括消息確認,消息持久化,消費者流量控制等。Classic隊列也支持優(yōu)先級隊列、鏡像隊列等高級功能。然而,Classic隊列在集群節(jié)點間同步消息時,可能會造成大量的磁盤和網(wǎng)絡(luò)資源消耗。
-
Quorum 隊列:Quorum 隊列是 RabbitMQ 3.8 版本引入的新特性,用于替代之前版本的鏡像隊列。這種隊列類型基于 Raft 共識算法實現(xiàn),主要目標是提供更高的數(shù)據(jù)安全性和可用性。Quorum隊列在處理大量消息,尤其是持久化消息時,性能更優(yōu),資源消耗更少。推薦使用這種類型。
-
Stream 隊列:Stream 隊列是 RabbitMQ 3.9 版本新增的功能,它提供了對消息流的支持。這種隊列類型適合處理大數(shù)據(jù)工作負載和流處理,它將消息存儲在磁盤上,允許消費者異步并行讀取,從而提供了高吞吐量和低延遲的性能。需要注意的是,Stream 隊列需要安裝和啟用 stream 插件。
4.4.2 創(chuàng)建一個隊列
虛擬機選擇v-1,類型選擇仲裁隊列,輸入隊列名稱q1
點擊Add queue創(chuàng)建隊列
點擊q1可以進去隊列管理頁面
4.4.3 發(fā)送消息
展開 Publish message,在Payload輸入消息,點擊Publish message發(fā)送消息
發(fā)送后在上面預(yù)覽就可以看到隊列q1中的消息統(tǒng)計信息
Ready:未消費的消息數(shù)量
Unacked:未應(yīng)答的消息數(shù)量
Total:總共的消息數(shù)量(Ready+Unacked)
4.4.4 消費消息
展開Get messages,應(yīng)答模式有:
Nack message requeue true:不應(yīng)答并且將消息重新入隊
Automatic ack:自動應(yīng)答,稍后消息就被刪除
Reject requeue true:將消息拒絕并重新入隊
Reject requeue false:將消息拒絕但不重新入隊,即丟棄消息
這里我選擇自動應(yīng)答
點擊**Get Message(s)**獲取消息
再獲取一次,可以看到已經(jīng)消費的消息不會再出現(xiàn)文章來源:http://www.zghlxwxcb.cn/news/detail-651650.html
5. 總結(jié)
??本文提供了一份全面的 RabbitMQ 入門指南,專注于 RabbitMQ 管理頁面的詳細介紹和實戰(zhàn)操作??梢酝ㄟ^本文了解 RabbitMQ 管理頁面的主要功能,包括連接、通道、交換機、隊列、生產(chǎn)者和消費者。本文提供的實戰(zhàn)例子展示了如何在 RabbitMQ 中創(chuàng)建虛擬機、建立連接和通道,并創(chuàng)建和配置交換機、隊列,以及發(fā)送和消費消息。旨在幫助初學者深入理解 RabbitMQ 的管理頁面,并提供實用的操作示例。希望你能從本文中獲得有關(guān) RabbitMQ 管理頁面的相關(guān)指導(dǎo)。文章來源地址http://www.zghlxwxcb.cn/news/detail-651650.html
到了這里,關(guān)于rabbitMQ入門指南:管理頁面全面指南及實戰(zhàn)操作的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!