RabbitMQ管理:我們應該瞭解的命令行工具rabbitmqctl

消息中間件RabbitMQ提供了強大的消息隊列服務,在我們應用開發中起到了至關重要的作用,不但如此,從服務端的角度,RabbitMQ還提供了一些工具應用,對我們來管理RabbitMQ,提供了直觀的操作。

對於RabbitMQ提供的工具應用,包含rabbitmqctl工具和rabbitmq management插件:rabbitmqctl工具是一個系列的工具,運用這個工具可以執行大部分的RabbitMQ的管理操作。而 rabbitmq management 插件是RabbitMQ提供的一個管理插件,讓用戶可以通過圖形化的方式來管理RabbitMQ。這篇先來說一說rabbitmqctl命令行工具。

一、虛擬主機(vhost)

首先來說一說虛擬主機,虛擬主機是每一個RabbitMQ服務器都能創建虛擬的消息服務器,稱之爲vhost,每一個vhost本質上是一個獨立的小型RabbitMQ服務器,擁有自己獨立的隊列、 交換器及綁定關係等,井且它擁有自己獨立的權限。vhost就像是虛擬機與物理服務器一樣,它們在各個實例間提供邏輯上的分離,爲不同程序安全保密地運行數據,它既能將同一個 RabbitMQ中的衆多客戶區分開,又可以避免隊列和交換器等命名衝突。 vhost 之間是絕對隔離的,無法將vhost1中的交換器與 vhost2 中的隊列進行綁定,這樣既保證了安全性,又可以確保可移植性。如果在使用RabbitMQ達到一定規模的時候,建議用戶對業務功能、場景進行歸類區分,併爲之分配獨立的vhost。

創建新的vhost:rabbitmqctl add_vhost 虛擬主機名稱

已創建的vhost列表:rabbitmqctl list_vhosts [name|tracing]

刪除創建的vhost:rabbitmqctl delete_vhost 虛擬主機名稱,刪除一個 vhost 同時也會刪除其下所有的隊列、交換器、綁定關係、 用戶權限、參數和策略等信息。

二、權限的分配(permissions)

在RabbitMQ中,權限控制則是以vhost爲單位的 。當創建一個用戶時,用戶通常會被指派給至少一個 vhost,並且只能訪問被指派的vhost內的隊列、交換器和綁定關係等。因此, RabbitMQ中的授予權限是指在vhost 級別對用戶而言的權限授予。

權限分配命令:rabbitmqctl set_permissions [-p vhost] {user) {conf) {write) {read)

解釋:vhost :虛擬主機名稱,默認值是/

user:訪問vhost的用戶

conf:配置權限,正則表達式匹配

write:可寫權限,正則表達式匹配

read:可讀權限,正則表達式匹配

禁止權限的命令:rabbitmqctl clear_permissions [-p vhost] {username}

列舉權限的命令:rabbitmqctl list_permissions [-p vhost] ,這是用來顯示虛擬主機上的權限

rabbitmqctl list_user_permissions {username}, 顯示用戶權限

三、用戶管理

在RabbitMQ中,用戶是訪問控制 ( Access Control)的基本單元,且單個用戶可以跨越多 個vhost進行授權。針對一至多個vhost,用戶可以被賦予不同級別的訪問權限,並使用標準的 用戶名和密碼來認證用戶。

創建用戶的命令:rabbitmqctl add_user {username} {password}

更改用戶的密碼:rabbitmqctl change_password {username} {newpassword}

清除密碼的命令:rabbitmqctl clear_password {username},這樣用戶就不能使用密碼登陸了

驗證用戶的命令:rabbitmqctl authenticate_user {username} {password}

刪除用戶的命令:rabbitmqctl delete_user {username}

已創建用戶列表:rabbitmqctl list_users

其中tags是用戶的角色類型,分爲5種:

none: 無任何角色。新創建的用戶的角色默認爲none

management: 可以訪問 Web 管理頁面

policymaker: 包含management的所有權限,並且可以管理策略和參數

monitoring: 包含management的所有權限,並且可以看到所有連接、信道及節點相關的信息。

administartor:包含monitoring的所有權限,井且可以管理用戶、虛擬主機、權限、策略、參數等。 administator代表了最高的權限

設置用戶的角色命令:rabbitmqctl set_user_tags {username} {tag ...},可設置多個tag

通過命令行工具rabbitmqctl我們創建了虛擬主機(vhost)、用戶(user)和分配了相關的權限(permissions),在我們的應用開發中就可以配置這些我們提前創建好的信息,讓RabbitMQ更好的爲我們服務。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章