.Net Redis實戰指南——常用命令
本問主要介紹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命令設置用戶標籤。
可以看到新添加的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帳號只有「/」的操作許可權
可以看到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服務,瀏覽器訪問//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查看

