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