本問主要介紹rabbitmqctl工具的常用命令。
vhost
一個RabbitMQ伺服器可以建立多個虛擬的訊息伺服器,稱之為虛擬主機(virtual host),簡稱為vhost。vhost之間是絕對隔離的,能將同一個RabbitMQ中的客戶分開,又能避免佇列和交換器等命名衝突。客戶端在連線的時候必須制定一個vhost。RabbitMQ預設建立的vhost為“/”。
rabbitmqctl add_vhost {vhost} 建立一個新的vhost
sudo rabbitmqctl list_vhosts 列出所有vhost
rabbitmqctl delete_vhost {vhost} 刪除一個vhost
使用者
使用者是訪問控制(Access Control)的基本單元,且單個使用者可以跨越多個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 列出當前所有使用者
可以看到新新增的user1 tags是[],可以呼叫set_user_tags命令設定使用者標籤。
rabbitmqctl set_user_tags {username} {tag...} 設定使用者角色標籤(設定後之前現有的標籤都會被刪除)
rabbitmq支援的標籤有如下:
none:無任何角色。新建立的使用者的角色預設為none。
management:可以訪問Web管理頁面。
policymaker:包含management的所有許可權,並且可以管理策略(Policy)和引數(Parameter)。
monitoring:包含management的所有許可權,並且可以看到所有連線、通道及節點相關的資訊。
administartor:包含monitoring的所有許可權,並且可以管理使用者、虛擬主機、許可權、策略、引數等。administator代表了最高的許可權。
許可權
為了更好的理解user vhost之間的許可權關係,再新增一個vhost(vhost1)。
rabbitmqctl list_user_permissions {username} 列舉許可權資訊
可以看到mymq賬號只有“/”的操作許可權
rabbitmqctl set_permissions [-p vhost] {user}{conf}{write}{read} 設定使用者在vhost的許可權
set_permissions命令引數說明:
vhost:授予使用者訪問許可權的vhost名稱,可以設定為預設值,即vhost為“/”。
user:可以訪問指定vhost的使用者名稱。
conf:一個用於匹配使用者在哪些資源上擁有可配置許可權的正則表示式。
write:一個用於匹配使用者在哪些資源上擁有可寫許可權的正則表示式。
read:一個用於匹配使用者在哪些資源上擁有可讀許可權的正則表示式。
注:可配置指的是佇列和交換器的建立及刪除之類的操作;可寫指的是釋出訊息;可讀指與訊息有關的操作,包括讀取訊息及清空整個佇列等。
rabbitmqctl list_permissions [-p vhost] 列舉vhost許可權資訊
rabbitmqctl clear_permissions [-p vhost] {username} 清除使用者在vhost的許可權
其他
rabbitmq-plugins enable [plugin-name] 啟動外掛
rabbitmq-plugins disable [plugin-name] 關閉外掛
如Web外掛可以通過rabbitmq-plugins enable rabbitmq_management命令開啟。開啟之後重啟RabbitMQ服務,瀏覽器訪問http://localhost:15672即可開啟Web管理外掛(第一次可使用預設的guest/guest使用者和密碼登入)。
rabbitmqctl list_consumers [-p vhost] 列舉消費者資訊,預設為“/”
rabbitmqctl status 顯示Broker的狀態
rabbitmqctl node_health_check 對RabbitMQ節點進行健康檢查
rabbitmqctl environment 顯示每個執行程式環境中每個變數的名稱和值。
rabbitmqctl report 為所有伺服器狀態生成一個伺服器狀態報告
以上兩個命令輸出很複雜有機會在細看了。
list_exchanges [-p vhost] 列舉交換機資訊,預設為“/”
list_queues [-p vhost] 列舉佇列資訊,預設為“/”
更多應用和叢集相關命令可通過 rabbitmqctl help檢視