RabbitMQ 之 命令大全 及 操作大全

rabbitmqctl 命令的一些基礎(chǔ)操作

rabbitmqctl add vhost {vhostName} -> 命令創(chuàng)建一個新的 vhost ,大括號里的參 數(shù)表示 vhost 的名稱。
rabbitmqctl list_vhosts {name,tracing} -> name:羅列出所有虛擬機(jī),tracing:表示是否使用了 RabbitMQ 的 trace 功能
rabbitmqctl delete_vhost {vhostName) -> 命令刪除一個vhost,同時也會刪除其下所有的隊列、交換器、綁定關(guān)系、 用戶權(quán)限、參數(shù)和策略等信息。
rabbitmqctl set permissions [-p vhostName] {userName) {conf) {write) {read) -> RabbitMQ 中的授予權(quán)限是指在 vhost 級別對用戶而言的權(quán)限授予。

vhost: 授予用戶訪問權(quán)限的 vhost 名稱,可以設(shè)置為默認(rèn)值,即 vhost 為 "/"。
user: 可以訪問指定 vhost 的用戶名。
conf: 一個用于匹配用戶在哪些資源上擁有可配置權(quán)限的正則表達(dá)式。(交換機(jī),隊列,創(chuàng)建用戶等)
write: 一個用于匹配用戶在哪些資源上擁有可寫權(quán)限的正則表達(dá)式。
read: 一個用于匹配用戶在哪些資源上擁有可讀權(quán)限的正則表達(dá)式。
rabbitmqctl set_permissions -p vhost1 root ".*" ".*" ".*" -> 配置root用戶在vhost1隊列擁有所有權(quán)限
rabbitmqctl set_permissions -p vhost2 root "^queue.*" ".*" ".*" -> 配置root用戶在vhost2隊列擁有以"queue"開頭的資源上具備可配置權(quán)限,并在所有資源上有用讀寫權(quán)限

rabbitmqctl clear_permissions [-p vhostName] {userName} -> 清楚用戶對某個虛擬機(jī)的權(quán)限。
rabbitmqctl list_permissions [-p vhost] -> 用來顯示虛擬主機(jī)上的權(quán)限。
rabbitmqctl list_user_permissions {userName} -> 用來顯示用戶在已分配虛擬機(jī)上的權(quán)限。

rabbitmqctl 是用來管理 RabbitMQ 中間件的命令行工具,它通過連接各個 RabbitMQ 節(jié)點來執(zhí)行所有操作。
rabbitmqctl [-n node) [-t timeout) [-q) (command) [command options...)

-q:標(biāo)志來啟用 quiet 模式,這樣可以屏蔽一些消息的輸出。 默認(rèn)不開啟 quiet 模式。
-t:操作超時時間(秒為單位),只適用于 "list_xxx" 類型的命令,默認(rèn)是無窮大。
演示效果:/默認(rèn)虛擬機(jī)
./rabbitmqctl list_vhosts
Listing vhosts 
/
./rabbitmqctl list_vhosts -q
/
./rabbitmqctl list vhosts -q -t 1
/
./rabbitmqctl list vhosts -q -t 0
Error : {timeout , O. O}

用戶管理操作

rabbitmqctl add_user {userName} {passWord} -> 創(chuàng)建用戶
rabbitmqctl change_password {userName} {newPassword} -> 修改密碼
rabbitmqctl clear_password {userName} -> 清除用戶密碼
rabbitmqctl authenti?ate_user {userName} {passWord} -> 驗證用戶
rabbitmqctl delete_user {userName} -> 刪除用戶
rabbitmqctl llist_users -> 羅列當(dāng)前所有用戶,和用戶角色
rabbitmqctl set_user_tags {userName} {tag ...} -> 給用戶設(shè)置角色,tag 參數(shù)用于設(shè)置 0個、1個或者 多個的角色,設(shè)置之后任何之前現(xiàn)有的身份都會被刪除。

用戶角色分為5中類型:
none: 無任何角色。新創(chuàng)建的用戶的角色默認(rèn)為 none。
management:可以訪問web管理頁面。
policymaker:包含managerment的所有權(quán)限,并且可以管理策略(Policy)和參數(shù)(Parameter)。
monitoring:包含management的所有權(quán)限,并且可以看到所有鏈接、信道及節(jié)點相關(guān)的信息。
administartor:包含monitoring的所有權(quán)限,并且可以管理用戶、虛擬機(jī)、權(quán)限、策略、參數(shù)等。(最高權(quán)限)

web頁面管理操作

Rabbitmq有管理頁面,訪問是 localhost:15672 ,但是需要開啟 RabbitMQ management 插件才可以訪問,Rabbitmq自帶的插件都是在 /plugins 目錄下,如下所示:
-rw-r--r-- 1 root root 162570 Oct 25 19 : 45 rabbitmq_federation-3.6.10.ez
-rw-r--r-- 1 root root 13796 Oct 25 19 : 45 rabbitmq_federation_management-3.6.10.ez
-rw-r--r-- 1 root root 22414 Oct 25 19 :45 rabbitmq_jms_topic_exchange-3.6.10.ez
-rw-r--r-- 1 root root 744360 Oct 25 19 : 45 rabbitmq_management-3.6.10.ez
-rw-r--r-- 1 root root 149205 Oct 25 19 : 45 rabbitmq_management_agent-3.6.10.ez
-rw-r--r-- 1 root root 41421 Oct 25 19 : 45 rabbitmq_management_visua1iser-3.6.10.ez
其中以.ez擴(kuò)展展名稱結(jié)尾的文件就是 RabbtMQ 的插件。rabbitmq_management-3.6.10.ez 就是指 RabbitMQ Management 插件。啟動語法如下:
rabbitmq-plugins [-n node] {command} [command options ...]
rabbitmq-plugins enable [plugin-name] -> 啟動插件
rabbitmq-plugins disable [plugin-name] -> 關(guān)閉插件
rabbitmq-plugins enable rabbitmq_management
rabbitmq-plugins list -> 查看啟動的插件有哪些,其中[E]的為顯示啟動,[e]的為隱式啟動,其意思就是啟動一個插件,還需要啟動一些其他插件,而這些插件就是隱式啟動,被指定的插件稱為顯示啟動。
rabbitmq_management 插件之后還需要重啟 RabbitMQ 服務(wù)才能使其正式生效。

應(yīng)用管理命令

rabbitmqctl stop [pid_file] -> 停止運行RabbitMQ的Erlang虛擬機(jī)和RabbitMQ服務(wù)應(yīng)用,其中pid_file是通過rabbitmq-server 命令啟動 RabbitMQ 服務(wù)時創(chuàng)建的,默認(rèn)情況下存放于mnesia 目錄中。注意rabbitmq-server -detach 這個帶有 -detach 后綴的命令來啟動 RabbitMQ 服務(wù)則不會生成 pid_file 文件。指定pid_file會等待指定進(jìn)程的結(jié)束。
rabbitmqctl shutdown -> 停止運行 RabbitMQ 的 Erlang 虛擬機(jī)和 RabbitMQ 務(wù)應(yīng)用。如果 RabbitMQ 沒有成功關(guān)閉,則會返回一個非零值。這個命令和rabbitmqctl stop 不同的是,它不需要指定 pid_file 而可以阻塞等待指定進(jìn)程的關(guān)閉。
rabbitmqctl stop_ app -> 停止 RabbitMQ 服務(wù)應(yīng)用,但是 Erlang 虛擬機(jī)還是處于運行狀態(tài)。此命令的執(zhí)行優(yōu)先于其 他管理操作,比如 rabbitmqctl reset。
rabbitmqctl start_ app -> 啟動 RabbitMQ 應(yīng)用。命令 型的用途是在執(zhí)行了其他管理操作之后,重新啟動之前停 止的 RabbitMQ 應(yīng)用,比 rabbi tmqctl reset。
rabbitmqctl wait [pid_file] -> 等待 RabbitMQ 應(yīng)用的啟動。它會等到 pid_file 的創(chuàng)建,然后等待 pid_file 中所代表 的進(jìn)程啟動。當(dāng)指定的進(jìn)程沒有啟動 RabbitMQ 應(yīng)用而關(guān)閉時將會返回失敗。
rabbitmqctl reset -> 將RabbitMQ 節(jié)點重置還原到最初狀態(tài)。包括從原來所在的集群中刪除此節(jié)點,從管理數(shù)據(jù)庫 中刪除所有的配置數(shù)據(jù),如己配置的用戶、 vhost 等,以及刪除所有的持久化消息。執(zhí)行 rabbi tmqctl reset 命令前必須停止RabbitMQ 應(yīng)用。
rabbitmqctl force _reset -> 強(qiáng)制將 RabbitMQ 節(jié)點重置還原到最初狀態(tài)。不同于 rabbitmqctl reset 命令, rabbitmqctl force_reset 命令不論當(dāng)前管理數(shù)據(jù)庫的狀態(tài)和集群配置是什么,都會無條件地重直節(jié)點。它只能在數(shù)據(jù)庫或集群配置己損壞的情況下使用。與 rabbitmqctl reset 命令一樣,執(zhí)行 rabbitmqctl force_reset 命令前必須先停止 RabbitMQ 應(yīng)用。
rabbitmqctl rotate_logs {suffix} -> 指示 RabbitMQ 節(jié)點輪換日志文件。RabbitMQ 節(jié)點會將原來的日志文件中的內(nèi)容追加到"原 始名稱+后綴"的日志文件中,然后再將新的日志內(nèi)容記錄到新創(chuàng)建的日志中(與原日志文件同 名)。當(dāng)目標(biāo)文件不存在時,會重新創(chuàng)建。如果不指定后綴 suffix. 則日志文件只是重新打開 而不會進(jìn)行輪換。
rabbitmqctl hipe_compile {directory} -> 暫時未知使用


該圖片來自rabbitmq實戰(zhàn).pdf

集群命令

rabbitmqctl joio_cluster {cluster_node} [--ram] -> 將節(jié)點加入指定集群中。在這個命令執(zhí)行前需要停止 RabbitMQ 應(yīng)用井重置節(jié)點。
rabbitmqctl cluster_status -> 顯示集群的狀態(tài)。
rabbitmqctl change_cluster_node_type {disclram} -> 修改集群節(jié)點的類型。在這個命令執(zhí)行前需要停止 Rabb tMQ 應(yīng)用。
rabbitmqctl forget_cluster_ node [--offiine] -> 將節(jié)點從集群中刪除,允許離線執(zhí)行 。
rabbitmqctl update_ cluster_nodes {clusternode} -> 在集群中的節(jié)點應(yīng)用啟動前咨詢 clusternode 節(jié)點的最新信息,并更新相應(yīng)的集群信息。這個和 join_cluster 不同,它不加入集群??紤]這樣一種情況 節(jié)點A和節(jié)點B都在集群中,當(dāng)節(jié)點A離線了,節(jié)點C又和節(jié)點B組成了一個集群,然后節(jié)點B又離開了集群,但A醒來的時候,他會嘗試聯(lián)系節(jié)點B,但是這樣會失敗,因為節(jié)點B已經(jīng)不再集群中了。Rabbitmqctlupdate cluster nodes -n A C 可以解決這種場景下出現(xiàn)的問題。
rabbitmqctl force_boot -> 確保節(jié)點可以啟動,即使它不是最后一個關(guān)閉的節(jié)點。通常情況下,當(dāng)關(guān)閉整個 RabbitMQ 集群時,重啟的第一個節(jié)點應(yīng)該是最后關(guān)閉的節(jié)點,因為它可以看到其他節(jié)點所看不到的事情。 但是有時會有一些異常情況出現(xiàn),比如整個集群都掉電而所有節(jié)點都認(rèn)為它不是最后 個關(guān)閉 的。在這種情況下,可以調(diào)用 rabbitmqctl force_boot 命令,這就告訴節(jié)點可以無條件 地啟動節(jié)點。在此節(jié)點關(guān)閉后,集群的任何變化,它都會丟失。如果最后 個關(guān)閉的節(jié)點永久 丟失了,那么需要優(yōu)先使用 rabbitmqctl forget_cluster _node offline 命令,因 為它可以確保鏡像隊列的正常運轉(zhuǎn)。
rabbitmqctl sync_queue [-p vhost] {queue} -> 指示未同步隊列 queue的slave 鏡像可以同步 maste 鏡像行的內(nèi)容。同步期間此隊列會被 阻塞(所有此隊列的生產(chǎn)消費者都會被阻塞),直到同步完成。此條命令執(zhí)行成功的前提是隊列 queue 配置了鏡像。注意 未同步隊列中的消息被耗盡后 最終也會變成同步,此命令主要用 于未耗盡的隊列。
rabbitmqctl cancel_sync_queue [-p vhost] {queue} -> 取消隊列 queue 同步鏡像的操作。
rabbitmqctl set_cluster_name {name} -> 設(shè)置集群名稱。

服務(wù)端狀態(tài)查詢

rabbitmqctl list_queues [-p vhost] [queueinfoitem ...] -> 此命令返回隊列的詳細(xì)信息,如果無 [-p vhost] 參數(shù),將顯示默認(rèn)的 vhost為 "/" 中的 隊列詳情。queueinfoitem 參數(shù)用于指示哪些隊列的信息項會包含在結(jié)果集中,結(jié)果集的列 順序?qū)⑵ヅ鋮?shù)的順序。 queueinfoitem 可以是下面列表中的任何值:

name: 隊列名稱。
durable:隊列是否持久。
auto_delete:隊列是否自動刪除。
arguments:隊列的參數(shù)。
policy:應(yīng)用到隊列上的策略名稱。
pid:隊列關(guān)聯(lián)Er1ang進(jìn)程的ID。
owner_pid:處理排他隊列連接的 Erlang 進(jìn)程ID。如果此隊列是非排他的,此值將為空。 
exclusive:隊列是否是排他的。
exclusive_consumer_pid:訂閱到此排他隊列的消費者相關(guān)的信道關(guān)聯(lián)的 Erlang 進(jìn)程ID。如果此隊列是非排他的,此值將為空
exclusive_consumer_tag:訂閱到此排他隊列的消費者的 consumerTag 如果 此隊列是非排他的,此值將為空。
messages_ready:準(zhǔn)備發(fā)送給客戶端的消息個數(shù)。
messages_unacknowledged:發(fā)送給客戶端但尚未應(yīng)答的消息個數(shù)。
messages:準(zhǔn)備發(fā)送給客戶端和未應(yīng)答消息的總和。
messages_ready_ram:駐留在內(nèi)存中 messages_ready 的消息個數(shù)。
messages_unacknowledged_ram:駐留在內(nèi)存中 messages_unacknowledged 的消息個數(shù)。
messages_ram:駐留在內(nèi)存中的消息總數(shù)。
messages_persistent:隊列中持久化消息的個數(shù)。對于非持久化隊列來說總是0.
messages_bytes:隊列中所有消息的大小總和 這里不包括消息屬性或者任何其他開銷。
messages_bytes_ready: 準(zhǔn)備發(fā)送給客戶端的消息的大小總和。
messages_bytes_unacknowledged:發(fā)送給客戶端但尚未應(yīng)答的消息的大小總和。
messages_bytes_ram:駐留在內(nèi)存中的 messages_bytes。
messages_bytes_persistent:隊列中持久化的 messages_bytes。
disk_reads:從隊列啟動開始,己從磁盤中讀取該隊列的消息總次數(shù)。
disk_writes:從隊列啟動開始,己向磁盤隊列寫消息的總次數(shù)。
consumer:消費者數(shù)目。
consumer_utilisation:隊列中的消息能夠立刻投遞給消費者的比率,介于0和1之間 。這個受網(wǎng)絡(luò)擁塞或者 Basic.Qos 的影響而小于1.
memory:與隊列相關(guān)的 Erlang 進(jìn)程所消耗的內(nèi)存字節(jié)數(shù),包括械、堆及內(nèi)部結(jié)構(gòu)。
slave_pids:如果隊列是鏡像的 ,列出所有 slave 鏡像的 pid。
synchronised_slave_pids:如果隊列是鏡像的,列出所有己經(jīng)同步的 slave 鏡像的pid。
state:隊列狀 態(tài)。正常情況下是running:如果隊列正常同步數(shù)據(jù)可能會有 "{syncing, MsgCount}" 的狀態(tài);如果隊列所在的節(jié)點掉線了,則隊列顯示狀態(tài)為 down (此時大多數(shù)的 queueinfoitems 也將不可用)。

rabbitmqctl list_exchanges [-p vhost] [exchangeinfoitem ...] -> 返回交換器的詳細(xì)細(xì)節(jié)。

name:交換器名稱。
type:交換器類型。
durable:設(shè)置是否持久化。 
auto_delete:是否自動刪除。
internal:是否內(nèi)置的。
arguments:其他的一些結(jié)構(gòu)化參數(shù)。
policy:交換器上的策略名稱。

rabbitmqctl list_bindings [-p vhost] [bindinginfoitem ...] -> 返回綁定關(guān)系的細(xì)節(jié)

source_name:綁定中消息來源的名稱。
source_kind:綁定中消息來源的類別。
destination_name:綁定中消息目的地的名稱。
destination_kind:綁定中消息目的地的種類。
routing_key:綁定的路由鍵。
arguments:綁定的參數(shù)。

rabbìtmqctl lìst_connectìons [connectìonìnfoìtem ...] -> 返回 TCP!IP連接的統(tǒng)計信息。

pid:與連接相關(guān)的 Er1ang 進(jìn)程 ID 
name:連接的名稱。
port:服務(wù)器端口。
host:返回反向 DNS 獲取的服務(wù)器主機(jī)名稱,或者 IP 地址,或者未啟用。
peer_port:服務(wù)器對端端口。當(dāng)一個客戶端與服務(wù)器連接時,這個客戶端的端口就是peer_port。
peer_host:返回反向 DNS 獲取的對端主機(jī)名稱,或者ip地址,或者未啟用。
ssl:是否啟用 SSL
ssl_protoco1:SSL 協(xié)議,如 tlsvl
ssl_key_exchange:SSL 密鑰交換算法,如 rsa 
ssl_cipher:SSL 加密算法,如 aes 256 cbc 
ssl_hash:SSL 哈希算法,如 sha
peer_cert_subject:對端的 SSL 安全證書的主題,基于盯C4514 的形式。 
peer_cert_issuer:對端 SSL 安全證書的發(fā)行者, 基于RFC4514 的形式 
peer_cert_va1idity:對端 SSL 安全證書的有效期。
state:連接狀態(tài),包括 starting tuning opening running flow blocking blocking closing closed 這幾種。
channe1s:該連接中的信道個數(shù)。
protoco1:使用的 AMQP 協(xié)議的版本,當(dāng)前是 {0,9,1} 或者 {0,8,0} 。注意,如果客戶端請求的是 AMQP 0-9 的連接, RabbitMQ 也會將其視為0-9-1
auth_mechanism:使用的 SASL 認(rèn)證機(jī)制,如 PLAIN AMQPLAIN EXTERNAL RABBIT-CR-DEMO 等
user:與連接相關(guān)的用戶名。
vhost:與連接相關(guān)的 vhost 的名稱。
timeout:連接超時/協(xié)商的心跳間隔,單位為秒。
frame_max:最大傳輸幀的大小,單位為B
channe1_max:此連接上信道的最大數(shù)量。如果值0,,則表示無上限,但客戶端一般會將0轉(zhuǎn)變?yōu)?65535
c1ient_properties:在建立連接期間由客戶端發(fā)送的信息屬性。 
recv_oct:收到的字節(jié)數(shù)。
recv_cnt:收到的數(shù)據(jù)包個數(shù)。
send_oct:發(fā)送的字節(jié)數(shù)。
send_cnt:發(fā)送的數(shù)據(jù)包個數(shù)。
send_pend:發(fā)送隊列大小。
connected_at:連接建立的時間戳。

rabbitmqctl list_channels [channelinfoitem ...] -> 返回當(dāng)前所有信道的信息。

pid:與連接相關(guān)的 Erlang 進(jìn)程 ID
connection:信道所屬連接的 Erlang 進(jìn)程 ID
name:信道的名稱。
number:信道的序號。
user:與信道相關(guān)的用戶名稱。
vhost:與信道相關(guān)的 vhost
transactional:信道是否處于事務(wù)模式。 
confirm:信道是否處于 publisher confirm 模式。
consumer_count:信道中的消費者的個數(shù)。
messages_unacknowledged:己投遞但是還未被 ack 的消息個數(shù)。
messages_uncommitted:己接收但是還未提交事務(wù)的消息個數(shù) 
acks_uncommitted:已a(bǔ)ck 收到但是還未提交事務(wù)的消息個數(shù)
messages_unconfirmed:己發(fā)送但是還未確認(rèn)的消息個數(shù) 如果信道不處于 publisher confmn 模式下 ,則此值為0
perfetch_count:新消費者的 Qos 個數(shù)限制 0表示無上限
global_prefetch_count:: 整個信道的 Qos 個數(shù)限制,0表示無上限

rabbitmqctllist_consumers [-p vhost] -> 列舉消費者信息 每行將顯示由制表符分隔的己訂閱隊列的名稱、相關(guān)信道的進(jìn)程標(biāo)識、consumerTag、是否需要消費端確認(rèn) prefetch_count 及參數(shù)列表這些信息。
rabbitmqctl status -> 顯示 Broker 的狀態(tài),比如當(dāng)前 Erlang 節(jié)點上運行的應(yīng)用程序、RabbitMQ/Erlang的版本信息、os 的名稱、內(nèi) 存及文件描述符等統(tǒng)計信息。
rabbitmqctl node_health_check -> 對RabbitMQ 節(jié)點進(jìn)行健康檢查,確認(rèn)應(yīng)用是否正常運行、list_queues list_channels 是否能夠正常返回等。
rabbitmqctl environment -> 顯示每個運行程序環(huán)境中每個變量的名稱和值。
rabbitmqctl report -> 為所有服務(wù)器狀態(tài)生成一個服務(wù)器狀態(tài)報告,井將輸出重定向到一個文件:rabbitmqctl report > report.txt

RabbitMQ Http API 接口

盡情期待

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 什么叫消息隊列? 消息(Message)是指在應(yīng)用間傳送的數(shù)據(jù)。消息可以非常簡單,比如只包含文本字符串,也可以更復(fù)...
    Agile_dev閱讀 2,430評論 0 24
  • CentOS安裝RabbitMQ 安裝erlang 配置epel源 centos6.xwget -O /etc/y...
    肖金光xjg閱讀 1,254評論 0 3
  • RabbitMQ 原理介紹及安裝部署 標(biāo)簽:RabbitMQ 安裝 簡介 RabbitMQ 是一個用 Erlang...
    神仙CGod閱讀 8,724評論 0 60
  • 如果RabbitMQ集群只有一個broker節(jié)點,那么該節(jié)點的失效將導(dǎo)致整個服務(wù)臨時性的不可用,并且可能會導(dǎo)致me...
    Java架構(gòu)_師閱讀 3,448評論 0 2
  • 如果RabbitMQ集群只有一個broker節(jié)點,那么該節(jié)點的失效將導(dǎo)致整個服務(wù)臨時性的不可用,并且可能會導(dǎo)致me...
    零點145閱讀 320評論 0 0

友情鏈接更多精彩內(nèi)容