必須要掌握的 RabbitMQ 操作命令
- 1. rabbitmqadmin
- 2. rabbitmqadmin 的功能
- 3.列出各種信息
- 4. 一個(gè)完整的例子
- 5. 命令一覽
- 6. 小結(jié)
關(guān)于 RabbitMQ 的管理,我們可以通過(guò)網(wǎng)頁(yè)來(lái)進(jìn)行,在松哥前面的文章中也和小伙伴們做了相關(guān)的介紹了:
RabbitMQ 管理頁(yè)面該如何使用
除了通過(guò) Web 管理頁(yè)面來(lái)進(jìn)行管理之外,我們也可以通過(guò)命令行來(lái)進(jìn)行管理,之前松哥在RabbitMQ 中的 VirtualHost 該如何理解一文中介紹過(guò)幾個(gè) RabbitMQ 管理命令。
也在另類玩法!使用 REST API 操作 RabbitMQ一文中介紹過(guò)一些相關(guān)的 REST API,在方便發(fā)送 HTTP 請(qǐng)求的地方調(diào)用這些 REST API,還是非常方便的。但是,在一些不方便發(fā)送 HTTP 請(qǐng)求的地方,這些 REST API 用著并不太方便,那么今天松哥就給大家再來(lái)介紹 RabbitMQ 的另一種玩法---rabbitmqadmin。
1. rabbitmqadmin
我們自己平時(shí)做練習(xí),一般都會(huì)開(kāi)啟 RabbitMQ 的 Web 管理頁(yè)面,然而在生產(chǎn)環(huán)境下,經(jīng)常是沒(méi)有 Web 管理頁(yè)面的,只能通過(guò) CLI 命令去管理 MQ。
其實(shí)呀,Web 管理頁(yè)面雖然友好,但是很多時(shí)候沒(méi)有 CLI 快捷,而且通過(guò) CLI 命令行的操作,我們可以做更多的定制,例如將關(guān)鍵信息查出來(lái)后提供給集中的監(jiān)控系統(tǒng)以觸發(fā)報(bào)警。
直接操作 CLI 命令行有點(diǎn)麻煩,RabbitMQ 提供了 CLI 管理工具 rabbitmqadmin ,其實(shí)就是基于 RabbitMQ 的 HTTP API,用 Python 寫(xiě)的一個(gè)腳本。因?yàn)?REST API 手動(dòng)寫(xiě)請(qǐng)求還是挺麻煩的,這些腳本剛好替我們簡(jiǎn)化了這個(gè)操作,讓這個(gè)事情變得更加簡(jiǎn)單了。
使用 rabbitmqadmin 要先會(huì)安裝它。
如果我們創(chuàng)建 RabbitMQ 容器的時(shí)候使用的是 rabbitmq:3-management 鏡像,那么默認(rèn)情況下,rabbitmqadmin 就是安裝好的。
否則可能需要我們自己安裝 rabbitmqadmin,安裝方式很簡(jiǎn)單,
首先確認(rèn)你的設(shè)備上安裝了 Python,這是最基本的,因?yàn)?rabbitmqadmin 這個(gè)工具就是 Python 腳本。
然后開(kāi)啟 RabbitMQ 的 Web 管理頁(yè)面,然后輸入如下地址(我的管理頁(yè)面度那口映射為 25672):
- http://localhost:25672/cli/index.html
在打開(kāi)的頁(yè)面中就可以看到 rabbitmqadmin 的下載鏈接。將 rabbitmqadmin 下載下來(lái)后,然后賦予其可執(zhí)行權(quán)限即可:
- chmod +x rabbitmqadmin
下載后的 rabbitmqadmin 我們可以直接用記事本打開(kāi),里邊其實(shí)就是一堆 Python 腳本。
這套流程操作下來(lái)還是挺麻煩的,所以,我建議大家直接使用 rabbitmq:3-management 鏡像,一步到位。
2. rabbitmqadmin 的功能
- 列出 exchanges, queues, bindings, vhosts, users, permissions, connections and channels。
- 創(chuàng)建和刪除 exchanges, queues, bindings, vhosts, users and permissions。
- 發(fā)布和獲取消息,以及消息詳情。
- 關(guān)閉連接和清空隊(duì)列。
- 導(dǎo)入導(dǎo)出配置。
接下來(lái)松哥就這些功能逐一和小伙伴們進(jìn)行介紹。
3.列出各種信息
查看所有交換機(jī):
- rabbitmqadmin list exchanges
查看所有隊(duì)列:
- rabbitmqadmin list queues
查看所有 Binding:
- rabbitmqadmin list bindings
查看所有虛擬主機(jī):
- rabbitmqadmin list vhosts
查看所有用戶信息:
- rabbitmqadmin list users
查看所有權(quán)限信息:
- rabbitmqadmin list permissions
查看所有連接信息:
- rabbitmqadmin list permissions
查看所有通道信息:
- rabbitmqadmin list connections
4. 一個(gè)完整的例子
接下來(lái)我們用 rabbitmqadmin 來(lái)寫(xiě)一個(gè)完整的消息收發(fā)例子看看。
首先創(chuàng)建一個(gè)名為 javaboy-exchange 的交換機(jī):
- rabbitmqadmin declare exchange name=javaboy-exchange durable=true auto_delete=false type=direct
這里各種參數(shù)都好理解,我就不多說(shuō)了。
接下來(lái)創(chuàng)建一個(gè)名為 javaboy-queue 的隊(duì)列:
- rabbitmqadmin declare queue name=javaboy-queue durable=true auto_delete=false
接下來(lái)再創(chuàng)建一個(gè) Binding,將交換機(jī)和消息隊(duì)列綁定起來(lái):
- rabbitmqadmin declare binding source=javaboy-exchange destination=javaboy-queue routing_key=javaboy-routing
這里涉及到到三個(gè)概念:
- source:源,其實(shí)就是指交換機(jī)。
- destination:目標(biāo),其實(shí)就是指消息隊(duì)列。
- routing_key:這個(gè)就是路由的 key。
接下來(lái)發(fā)布一條消息:
- rabbitmqadmin publish routing_key=javaboy-queue payload="hello javaboy"
這里參數(shù)都很簡(jiǎn)單,沒(méi)啥好說(shuō)的。
查看隊(duì)列中的消息(只查看,不消費(fèi),看完之后消息還在):
- rabbitmqadmin get queue=javaboy-queue
清空一個(gè)隊(duì)列中的消息:
- rabbitmqadmin purge queue name=javaboy-queue
5. 命令一覽
表格字體有點(diǎn)小,大家在公眾號(hào)【江南一點(diǎn)雨】后臺(tái)回復(fù) rabbitmqadmin 獲取 Excel 文檔鏈接。
6. 小結(jié)
好啦,今天就和小伙伴們簡(jiǎn)單介紹了一下 rabbitmqadmin,一個(gè)簡(jiǎn)單的 Python 腳本,感興趣的小伙伴可以去試試哦~