之前在RabbitMQ在Linux環境下安裝及運行中,我們介紹了CentOS環境下如何安裝Erlang及RabbitMQ,這裏緊接着來了解一下RabbitMQ的常用操作管理。
啓動和關閉RabbitMQ
啓動: rabbitmq-server
後臺運行: rabbitmq-server -detached
停止: rabbitmqctl stop
獲取服務器狀態信息
檢查消息節點是否正常:rabbitmqctl status
管理虛擬主機
在AMQP及RabbitMQ概論中,我們就介紹過虛擬主機,可以將衆多客戶端進行區分,又可以避免隊列和交換器的命名衝突。
這裏我們可以利用rabbitmqctl list_vhosts
來查看所有的虛擬主機,如下:
當然我們也可以使用 rabbitmqctl add_vhost xxx
來新增虛擬主機如下:
用戶管理
guest是默認用戶,具有默認virtual host "/"上的全部權限,僅能通過localhost訪問RabbitMQ包括Plugin,建議刪除或更改密碼。可通過將配置文件中loopback_users
來取消其本地訪問的限制。
rabbitmqctl add_user [username] [pwd]
添加用戶
rabbitmqctl delete_user [username]
刪除用戶
rabbitmqctl list_users
查看所有用戶
rabbitmqctl change_password Username Newpassword
修改密碼
用戶權限控制
用戶僅能對其所能訪問的virtual hosts中的資源進行操作。這裏的資源指的是virtual hosts中的exchanges、queues等,操作包括對資源進行配置、寫、讀。配置權限可創建、刪除、資源並修改資源的行爲,寫權限可向資源發送消息,讀權限從資源獲取消息。比如:
- exchange和queue的declare與delete分別需要:exchange和queue上的配置權限
- queue的bind與unbind需要:queue寫權限,exchange的讀權限
- 發消息(publish)需要:exchange的寫權限
- 獲取或清除(get、consume、purge)消息需要:queue的讀權限
對何種資源具有配置、寫、讀的權限通過正則表達式來匹配,具體命令如下:
rabbitmqctl set_permissions [-p <vhostpath>] <user> <conf> <write> <read>
如用戶root在默認的虛擬主機上的所有權限:
用戶角色
用戶角色分爲:none
、management
、policymaker
、monitoring
、administrator
-
none
或爲空,該角色不能訪問management plugin,通常就是普通的生產者和消費者 -
management
普通的生產者和消費者加:
可以通過AMQP登入的virtual hosts
可以查看自己的virtual hosts中的queues、exchanges 和 bindings
可以查看和關閉自己的 channels 和 connections
可以查看有關自己的virtual hosts的“全局”的統計信息,包含其他用戶在這些virtual hosts中的活動 -
policymaker
management可以做的任何事加:
查看、創建和刪除自己的virtual hosts所屬的policies和parameters -
monitoring
management可以做的任何事加:
查看列出所有virtual hosts,包括他們不能登錄的virtual hosts
查看其他用戶的connections和channels
查看節點級別的數據如clustering和memory使用情況
查看真正的關於所有virtual hosts的全局的統計信息 -
administrator
policymaker和monitoring可以做的任何事加:
創建和刪除virtual hosts
查看、創建和刪除users
查看創建和刪除permissions
關閉其他用戶的connections
在使用rabbitmqctl list_users
查看所有的用戶時,就可以看到其用戶的角色
這裏我們給上述的root用戶設置爲administrator角色,如下:
查看隊列、交換器、綁定關係
查看隊列:rabbitmqctl list_queues
查看交換器:rabbitmqctl list_exchanges
查看綁定關係:rabbitmqctl list_bindings
不過一般查看隊列、交換器,以及綁定關係,一般也不會執行查看語句進行查看,因爲我們可以通過web的管理插件來進行查看嘛