本問主要介紹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查看
