隨筆 - 41  文章 - 7  trackbacks - 0
          <2016年7月>
          262728293012
          3456789
          10111213141516
          17181920212223
          24252627282930
          31123456

          常用鏈接

          留言簿

          隨筆分類(lèi)

          隨筆檔案

          搜索

          •  

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          名稱(chēng)

          rabbitmqctl — 用于管理中間件的命令行工具

          語(yǔ)法

          rabbitmqctl [-n node] [-t timeout] [-q] {command} [command options...]

          描述

          RabbitMQ是AMQP的實(shí)現(xiàn), 后者是高性能企業(yè)消息通信的新興標(biāo)準(zhǔn). RabbitMQ server是AMQP 中間件健壯的,可擴(kuò)展的實(shí)現(xiàn).

          rabbitmqctl 用來(lái)管理RabbitMQ中間件的命令行工具.它通過(guò)連接中間件節(jié)點(diǎn)來(lái)執(zhí)行所有操作。

          如果中間件沒(méi)有運(yùn)行,將會(huì)顯示診斷信息, 不能到達(dá),或因不匹配Erlang cookie而拒絕連接.

          選項(xiàng)

          [-n node]

          默認(rèn)節(jié)點(diǎn)是"rabbit@server",此處的server是本地主機(jī). 在一個(gè)名為"server.example.com"的主機(jī)上, RabbitMQ Erlang node 的節(jié)點(diǎn)名稱(chēng)通常是rabbit@server (除非RABBITMQ_NODENAME在啟動(dòng)時(shí)設(shè)置了非默認(rèn)值). hostname -s 的輸出通常是"@" 標(biāo)志后的東西.查看rabbitmq-server(1)來(lái)了解配置RabbitMQ broker的細(xì)節(jié).

          [-q]

          使用-q標(biāo)志來(lái)啟用寧?kù)o(quiet)模式,這會(huì)一致消息輸出.

          [-t timeout]

          操作超時(shí)時(shí)間(秒為單位). 只適用于"list" 命令. 默認(rèn)是無(wú)窮大.

          命令

          應(yīng)用程序和集群管理

          stop [pid_file]

          用于停止運(yùn)行RabbitMQ的Erlang node.如果指定了pid_file,還將等待指定的過(guò)程結(jié)束。例如:

          rabbitmqctl stop

          此命令會(huì)終止RabbitMQ node的運(yùn)行.

          stop_app

          停止RabbitMQ application,但Erlang node會(huì)繼續(xù)運(yùn)行.此命令主要用于優(yōu)先執(zhí)行其它管理操作(這些管理操作需要先停止RabbitMQ application),如reset.例如:

          rabbitmqctl stop_app

          start_app

          啟動(dòng)RabbitMQ application.

          此命令典型用于在執(zhí)行了其它管理操作之后,重新啟動(dòng)停止的RabbitMQ application。如reset.例如:

          rabbitmqctl start_app

          此命令來(lái)指導(dǎo)RabbitMQ node來(lái)啟動(dòng)RabbitMQ application.

          wait {pid_file}

          等待RabbitMQ application啟動(dòng).此命令用來(lái)等待RabbitMQ application來(lái)啟動(dòng)node。它會(huì)等待創(chuàng)建pid文件,然后等待pid文件中的特定pid過(guò)程啟動(dòng),最后等待RabbitMQ  application 來(lái)啟動(dòng)node. 

          pid file是通過(guò)rabbitmq-server 腳本來(lái)創(chuàng)建的.默認(rèn)情況下,它存放于Mnesia目錄中. 修改RABBITMQ_PID_FILE 環(huán)境變量可以改變此位置。如:

          rabbitmqctl wait /var/run/rabbitmq/pid

          此命令會(huì)在RabbitMQ node啟動(dòng)后返回.

          reset

          將RabbitMQ node還原到最初狀態(tài).包括從所在群集中刪除此node,從管理數(shù)據(jù)庫(kù)中刪除所有配置數(shù)據(jù),如已配置的用戶和虛擬主機(jī),以及刪除所有持久化消息.

          執(zhí)行reset和force_reset之前,必須停止RabbitMQ application ,如使用stop_app.

          示例:

          rabbitmqctl reset

          此命令會(huì)重設(shè)RabbitMQ node.

          force_reset

          強(qiáng)制RabbitMQ node還原到最初狀態(tài).

          不同于reset , force_reset 命令會(huì)無(wú)條件地重設(shè)node,不論當(dāng)前管理數(shù)據(jù)庫(kù)的狀態(tài)和集群配置是什么. 它只能在數(shù)據(jù)庫(kù)或集群配置已損壞的情況下才可使用。

          執(zhí)行reset和force_reset之前,必須停止RabbitMQ application ,如使用stop_app.

          示例:

          rabbitmqctl force_reset

          此命令會(huì)重設(shè)RabbitMQnode.

          rotate_logs {suffix}

          指示RabbitMQ node循環(huán)日志文件.

          RabbitMQ 中間件會(huì)將原來(lái)日志文件中的內(nèi)容追加到原始名稱(chēng)和后輟的日志文件中,然后再將原始日志文件內(nèi)容復(fù)制到新創(chuàng)建的日志上。實(shí)際上,當(dāng)前日志內(nèi)容會(huì)移到以此后輟結(jié)尾的文件上。當(dāng)目標(biāo)文件不存在時(shí),將會(huì)進(jìn)行創(chuàng)建。如果不指定后輟,則不會(huì)發(fā)生循環(huán),日志文件只是重新打開(kāi)。示例:

          rabbitmqctl rotate_logs .1

          此命令指示RabbitMQ node將日志文件的內(nèi)容追加到新日志文件(文件名由原日志文件名和.1后輟構(gòu)成)中。如. rabbit@mymachine.log.1 和 rabbit@mymachine-sasl.log.1. 最后, 日志會(huì)在原始位置恢復(fù)到新文件中.

          集群管理

          join_cluster {clusternode} [--ram]

          clusternode

          加入集群的節(jié)點(diǎn).

          [--ram]

          如果進(jìn)行了設(shè)置,節(jié)點(diǎn)將以RAM節(jié)點(diǎn)身份加入集群.

          指導(dǎo)節(jié)點(diǎn)成為集群中的一員. 在加入集群之前,節(jié)點(diǎn)會(huì)重置,因此在使用此命令時(shí),必須小心. 這個(gè)命令要成功,RabbitMQ應(yīng)用程序必須先停止,如stop_app.

          集群節(jié)點(diǎn)可以是兩種類(lèi)型: 磁盤(pán)節(jié)點(diǎn)(Disc Node) 或 內(nèi)存節(jié)點(diǎn)(RAM Node).磁盤(pán)節(jié)點(diǎn)會(huì)在RAM和磁盤(pán)中復(fù)制數(shù)據(jù), 通過(guò)冗余可以防止節(jié)點(diǎn)失效事件,并可從斷電這種全局事件中進(jìn)行恢復(fù). RAM節(jié)點(diǎn)只在RAM中復(fù)制數(shù)據(jù)(除了隊(duì)列的內(nèi)容外,還依賴于隊(duì)列是否是持久化的或者內(nèi)容對(duì)于內(nèi)存來(lái)說(shuō)是否過(guò)大) ,并主要用于可伸縮性. RAM節(jié)點(diǎn)只有當(dāng)管理資源(如,增加/刪除隊(duì)列,交換機(jī),或綁定)的時(shí)候才具有更高的性能.一個(gè)集群必須至少有一個(gè)磁盤(pán)節(jié)點(diǎn),通常來(lái)說(shuō)還不止一個(gè).

          默認(rèn)情況下,節(jié)點(diǎn)是磁盤(pán)節(jié)點(diǎn).如果你想要?jiǎng)?chuàng)建內(nèi)存節(jié)點(diǎn),需要提供--ram 標(biāo)志.

          在執(zhí)行cluster命令之后, 無(wú)論何時(shí),當(dāng)前節(jié)點(diǎn)上啟動(dòng)的RabbitMQ 應(yīng)用程序在節(jié)點(diǎn)宕機(jī)的情況下,會(huì)嘗試連接集群中的其它節(jié)點(diǎn)。

          要脫離集群, 必須重設(shè)(reset)節(jié)點(diǎn). 你也可以通過(guò)forget_cluster_node 命令來(lái)遠(yuǎn)程刪除節(jié)點(diǎn).

          更多詳情,參考集群指南.

          例如:

          rabbitmqctl join_cluster hare@elena --ram

          此命令用于指示RabbitMQ node以ram節(jié)點(diǎn)的形式將 hare@elena 加入集群.

          cluster_status

          按節(jié)點(diǎn)類(lèi)型來(lái)分組展示集群中的所有節(jié)點(diǎn),包括當(dāng)前運(yùn)行的節(jié)點(diǎn).

          例如:

          rabbitmqctl cluster_status

          此命令會(huì)顯示集群中的所有節(jié)點(diǎn).

          change_cluster_node_type {disc | ram}

          修改集群節(jié)點(diǎn)的類(lèi)型. 要成功執(zhí)行此操作,必須首先停止節(jié)點(diǎn),要將節(jié)點(diǎn)轉(zhuǎn)換為RAM節(jié)點(diǎn),則此節(jié)點(diǎn)不能是集群中的唯一disc節(jié)點(diǎn)。

          例如:

          rabbitmqctl change_cluster_node_type disc

          此命令會(huì)將一個(gè)RAM節(jié)點(diǎn)轉(zhuǎn)換為disc節(jié)點(diǎn).

          forget_cluster_node [--offline]

          [--offline]

          允許節(jié)點(diǎn)從脫機(jī)節(jié)點(diǎn)中刪除. 這只在所有節(jié)點(diǎn)都脫機(jī)且最后一個(gè)掉線節(jié)點(diǎn)不能再上線的情況下有用,從而防止整個(gè)集群從啟動(dòng)。它不能使用在其它情況下,因?yàn)檫@會(huì)導(dǎo)致不一致

          遠(yuǎn)程刪除一個(gè)集群節(jié)點(diǎn).要?jiǎng)h除的節(jié)點(diǎn)必須是脫機(jī)的, 而在刪除節(jié)點(diǎn)期間節(jié)點(diǎn)必須是在線的,除非使用了--offline 標(biāo)志.

          當(dāng)使用--offline 標(biāo)志時(shí),rabbitmqctl不會(huì)嘗試正常連接節(jié)點(diǎn);相反,它會(huì)臨時(shí)改變節(jié)點(diǎn)以作修改.如果節(jié)點(diǎn)不能正常啟動(dòng)的話,這是非常有用的.在這種情況下,節(jié)點(diǎn)將變成集群元數(shù)據(jù)的規(guī)范源(例如,隊(duì)列的存在),即使它不是以前的。因此,如果有可能,你應(yīng)該在最新的節(jié)點(diǎn)上使用這個(gè)命令來(lái)關(guān)閉。

          例如:

          rabbitmqctl -n hare@mcnulty forget_cluster_node rabbit@stringer

          此命令會(huì)從節(jié)點(diǎn)hare@mcnulty中刪除rabbit@stringer節(jié)點(diǎn).

          rename_cluster_node {oldnode1} {newnode1} [oldnode2] [newnode2 ...]

          支持在本地?cái)?shù)據(jù)庫(kù)中重命名集群節(jié)點(diǎn).

          此子命令會(huì)促使rabbitmqctl臨時(shí)改變節(jié)點(diǎn)以作出修改. 因此本地集群必須是停止的,其它節(jié)點(diǎn)可以是在線或離線的.

          這個(gè)子命令接偶數(shù)個(gè)參數(shù),成對(duì)表示節(jié)點(diǎn)的舊名稱(chēng)和新名稱(chēng).你必須指定節(jié)點(diǎn)的舊名稱(chēng)和新名稱(chēng),因?yàn)槠渌V沟墓?jié)點(diǎn)也可能在同一時(shí)間重命名.

          同時(shí)停止所有節(jié)點(diǎn)來(lái)重命名也是可以的(在這種情況下,每個(gè)節(jié)點(diǎn)都必須給出舊名稱(chēng)和新名稱(chēng))或一次停止一個(gè)節(jié)點(diǎn)來(lái)重命名(在這種情況下,每個(gè)節(jié)點(diǎn)只需要被告知其名句是如何變化的).

          例如:

          rabbitmqctl rename_cluster_node rabbit@misshelpful rabbit@cordelia

          此命令來(lái)將節(jié)點(diǎn)名稱(chēng)rabbit@misshelpful 重命名為rabbit@cordelia.

          update_cluster_nodes {clusternode}

          clusternode

          用于咨詢具有最新消息的節(jié)點(diǎn).

          指示已集群的節(jié)點(diǎn)醒來(lái)時(shí)聯(lián)系clusternode.這不同于join_cluster ,因?yàn)樗粫?huì)加入任何集群 - 它會(huì)檢查節(jié)點(diǎn)已經(jīng)以clusternode的形式存在于集群中了.

          需要這個(gè)命令的動(dòng)機(jī)是當(dāng)節(jié)點(diǎn)離線時(shí),集群可以變化.考慮這樣的情況,節(jié)點(diǎn)A和節(jié)點(diǎn)B都在集群里邊,這里節(jié)點(diǎn)A掉線了,C又和B集群了,然后B又離開(kāi)了集群.當(dāng)A醒來(lái)的時(shí)候,它會(huì)嘗試聯(lián)系B,但這會(huì)失敗,因?yàn)椋乱呀?jīng)不在集群中了.update_cluster_nodes -n A C 可解決這種場(chǎng)景.

          force_boot

          確保節(jié)點(diǎn)將在下一次啟動(dòng),即使它不是最后一個(gè)關(guān)閉的。通常情況下,當(dāng)你關(guān)閉整個(gè)RabbitMQ 集群時(shí),你重啟的第一個(gè)節(jié)點(diǎn)應(yīng)該是最后一個(gè)下線的節(jié)點(diǎn),因?yàn)樗梢钥吹狡渌?jié)點(diǎn)所看不到的事情. 但有時(shí)這是不可能的:例如,如果整個(gè)集群是失去了電力而所有節(jié)點(diǎn)都在想它不是最后一個(gè)關(guān)閉的.

          在這種節(jié)點(diǎn)掉線情況下,你可以調(diào)用rabbitmqctl force_boot .這就告訴節(jié)點(diǎn)下一次無(wú)條件的啟動(dòng)節(jié)點(diǎn).在此節(jié)點(diǎn)關(guān)閉后,集群的任何變化,它都會(huì)丟失.

          如果最后一個(gè)掉線的節(jié)點(diǎn)永久丟失了,那么你需要優(yōu)先使用rabbitmqctl forget_cluster_node --offline因?yàn)樗梢源_保在丟失的節(jié)點(diǎn)上掌握的鏡像隊(duì)列得到提升。

          例如:

          rabbitmqctl force_boot

          這可以強(qiáng)制節(jié)點(diǎn)下次啟動(dòng)時(shí)不用等待其它節(jié)點(diǎn).

          sync_queue [-p vhost] {queue}

          queue
          同步隊(duì)列的名稱(chēng)

          指示未同步slaves上的鏡像隊(duì)列自行同步.同步發(fā)生時(shí),隊(duì)列會(huì)阻塞(所有出入隊(duì)列的發(fā)布者和消費(fèi)者都會(huì)阻塞).此命令成功執(zhí)行后,隊(duì)列必須是鏡像的.

          注意,未同步隊(duì)列中的消息被耗盡后,最終也會(huì)變成同步. 此命令主要用于未耗盡的隊(duì)列。

          cancel_sync_queue [-p vhost] {queue}

          queue

          取消同步的隊(duì)列名稱(chēng).

          指示同步鏡像隊(duì)列停止同步.

          purge_queue [-p vhost] {queue}

          queue

          要清除隊(duì)列的名稱(chēng).

          清除隊(duì)列(刪除其中的所有消息).

          set_cluster_name {name}

          設(shè)置集群名稱(chēng). 集群名稱(chēng)在client連接時(shí),會(huì)通報(bào)給client,也可用于federation和shovel插件記錄消息的來(lái)源地. 群集名稱(chēng)默認(rèn)是來(lái)自在群集中的第一個(gè)節(jié)點(diǎn)的主機(jī)名,但可以改變。

          例如:

          rabbitmqctl set_cluster_name london

          設(shè)置集群名稱(chēng)為"london".

          用戶管理

          注意rabbitmqctl 管理RabbitMQ 內(nèi)部用戶數(shù)據(jù)庫(kù). 任何來(lái)自其它認(rèn)證后端的用戶對(duì)于rabbitmqctl來(lái)說(shuō)是不可見(jiàn)的.

          add_user {username} {password}

          username

          要?jiǎng)?chuàng)建的用戶名稱(chēng).

          password

          設(shè)置創(chuàng)建用戶登錄broker的密碼.       

          rabbitmqctl add_user tonyg changeit

          此命令用于指示RabbitMQ broker 創(chuàng)建一個(gè)擁有非管理權(quán)限的用戶,其名稱(chēng)為tonyg, 初始密碼為changeit.


          delete_user {username}

          username

          要?jiǎng)h除的用戶名稱(chēng).

          例如:

          rabbitmqctl delete_user tonyg

          此命令用于指示RabbitMQ broker刪除名為tonyg的用戶

          change_password {username} {newpassword}

          username

          要修改密碼的用戶名稱(chēng).

          newpassword

          用戶的新密碼.

          例如:

          rabbitmqctl change_password tonyg newpass

          此命令用于指定RabbitMQ broker將tonyg 用戶的密碼修改為newpass.

          clear_password {username}

          username

          要清除密碼的用戶名稱(chēng).

          例如:

          rabbitmqctl clear_password tonyg

          此命令會(huì)指示RabbitMQ broker清除名為tonyg的用戶密碼.現(xiàn)在,此用戶不能使用密碼登錄(但可以通過(guò)SASL EXTERNAL登錄,如果配置了的話).

          authenticate_user {username} {password}

          username

          用戶的名稱(chēng).

          password

          用戶的密碼.

          例如:

          rabbitmqctl authenticate_user tonyg verifyit

          此命令會(huì)指示RabbitMQ broker以名稱(chēng)為tonyg, 密碼為verifyit來(lái)進(jìn)行驗(yàn)證.

          set_user_tags {username} {tag ...}

          username

          要設(shè)置tag的用戶名稱(chēng).

          tag

          用于設(shè)置0個(gè),1個(gè)或多個(gè)tags.任何現(xiàn)有的tags都將被刪除.

          例如:

          rabbitmqctl set_user_tags tonyg administrator

          此命令指示RabbitMQ broker用于確保tonyg 是administrator.當(dāng)通過(guò)AMQP來(lái)登錄時(shí),這沒(méi)有什么效果,但用戶通過(guò)其它的途經(jīng)來(lái)登錄時(shí),它可用來(lái)管理用戶,虛擬主機(jī)和權(quán)限(如使用管理插件).

          rabbitmqctl set_user_tags tonyg

          此命令會(huì)指示RabbitMQ broker刪除tonyg上的任何現(xiàn)有的tag.

          list_users

          列出用戶. 每個(gè)結(jié)果行都包含用戶名,其后緊跟用戶的tags.

          例如:

          rabbitmqctl list_users

          此命令指示RabbitMQ broker列出所有用戶.

          訪問(wèn)控制

          注意rabbitmqctl 會(huì)管理RabbitMQ的內(nèi)部用戶數(shù)據(jù)庫(kù). 無(wú)權(quán)限的用戶將不能使用rabbitmqctl.

          add_vhost {vhost}

          vhost

          要?jiǎng)?chuàng)建虛擬主機(jī)名稱(chēng).

          創(chuàng)建一個(gè)虛擬主機(jī).

          例如:

          rabbitmqctl add_vhost test

          此命令指示RabbitMQ broker來(lái)創(chuàng)建一個(gè)新的名為test的虛擬主機(jī).

          delete_vhost {vhost}

          vhost

          要?jiǎng)h除的虛擬主機(jī)的名稱(chēng).

          刪除一個(gè)虛擬主機(jī).

          刪除一個(gè)虛擬主機(jī),同時(shí)也會(huì)刪除所有交換機(jī),隊(duì)列,綁定,用戶權(quán)限,參數(shù)和策略.

          例如:

          rabbitmqctl delete_vhost test

          此命令指示RabbitMQ broker刪除名為test的虛擬主機(jī).

          list_vhosts [vhostinfoitem ...]

          列出所有虛擬主機(jī).

          vhostinfoitem 參數(shù)用于標(biāo)識(shí)哪些虛擬主機(jī)應(yīng)該包含在結(jié)果集中.結(jié)果集中的列順序會(huì)匹配參數(shù)的順序.vhostinfoitem 可接受下面的值:

          name

          虛擬主機(jī)的名稱(chēng).

          tracing

          是否對(duì)虛擬主機(jī)啟用追蹤.

          如果沒(méi)有指定vhostinfoitem 參數(shù),那么會(huì)顯示虛擬主機(jī)名稱(chēng).

          例如:

          rabbitmqctl list_vhosts name tracing

          此命令用于指示RabbitMQ broker顯示所有虛擬主機(jī).

          set_permissions [-p vhost] {user} {conf} {write} {read}

          vhost

          授予用戶可訪問(wèn)的虛擬機(jī)名稱(chēng),默認(rèn)是/.

          user

          可訪問(wèn)指定虛擬主機(jī)的用戶名稱(chēng).

          conf

          一個(gè)用于匹配用戶在哪些資源名稱(chēng)上擁有配置權(quán)限的正則表達(dá)式

          write

          一個(gè)用于匹配用戶在哪些資源名稱(chēng)上擁有寫(xiě)權(quán)限的正則表達(dá)式.

          read

          一個(gè)用于匹配用戶在哪些資源名稱(chēng)上擁有讀權(quán)限的正則表達(dá)式.

          設(shè)置用戶權(quán)限.

          例如:

          rabbitmqctl set_permissions -p /myvhost tonyg "^tonyg-.*" ".*" ".*"

          此命令表示RabbitMQ broker授予tonyg 用戶可訪問(wèn) /myvhost虛擬主機(jī),并在資源名稱(chēng)以"tonyg-"開(kāi)頭的所有資源上都具有配置權(quán)限,并在所有資源上都擁有讀寫(xiě)權(quán)限。

          clear_permissions [-p vhost] {username}

          vhost

          用于設(shè)置禁止用戶訪問(wèn)的虛擬主機(jī)名稱(chēng),默認(rèn)為/.

          username

          禁止訪問(wèn)特定虛擬主機(jī)的用戶名稱(chēng).

          設(shè)置用戶權(quán)限.

          例如:

          rabbitmqctl clear_permissions -p /myvhost tonyg

          此命令用于指示RabbitMQ broker禁止tonyg 用戶訪問(wèn)/myvhost虛擬主機(jī).

          list_permissions [-p vhost]

          vhost

          用于指定虛擬主機(jī)名稱(chēng),將會(huì)列出所有可訪問(wèn)此虛擬主機(jī)的所有用戶名稱(chēng)和權(quán)限.默認(rèn)為/.

          顯示虛擬機(jī)上權(quán)限.

          例如:

          rabbitmqctl list_permissions -p /myvhost

          此命令指示RabbitMQ broker列出所有已授權(quán)訪問(wèn)/myvhost 虛擬主機(jī)的用戶,同時(shí)也會(huì)列出這些用戶能在虛擬主機(jī)資源可操作的權(quán)限.注意,空字符串表示沒(méi)有任何授予的權(quán)限。

          list_user_permissions {username}

          username

          要顯示權(quán)限的用戶名稱(chēng).

          列出用戶權(quán)限.

          例如:

          rabbitmqctl list_user_permissions tonyg

          此命令指示RabbitMQ broker列出tonyg可授權(quán)訪問(wèn)的所有虛擬主機(jī)名稱(chēng),以及在這些虛擬主機(jī)上的操作.

          參數(shù)管理

          RabbitMQ的某些特性(如聯(lián)合插件)是動(dòng)態(tài)控制的. 每個(gè)參數(shù)都是與特定虛擬主機(jī)相關(guān)的組件名稱(chēng), name和value構(gòu)成的. 組件名稱(chēng)和name都是字符串,值是Erlang term. 參數(shù)可被設(shè)置,清除和顯示.通常你可以參考文檔來(lái)了解如何設(shè)置參數(shù).

          set_parameter [-p vhost] {component_name} {name} {value}

          設(shè)置一個(gè)參數(shù).

          component_name

          要設(shè)置的組件名稱(chēng).

          name

          要設(shè)置的參數(shù)名稱(chēng).

          value

          要設(shè)置的參數(shù)值,作不JSON項(xiàng)。在多數(shù)shells中,你更喜歡將其引起來(lái).

          例如:

          rabbitmqctl set_parameter federation local_username '"guest"'

          此命令用于在默認(rèn)虛擬主機(jī)上設(shè)置federation 組件的local_username 參數(shù)值"guest".

          clear_parameter [-p vhost] {component_name} {key}

          清除參數(shù).

          component_name

          要清除參數(shù)的組件名稱(chēng).

          name

          要清除的參數(shù)名稱(chēng).

          例如:

          rabbitmqctl clear_parameter federation local_username

          此命令用于清除默認(rèn)虛擬主機(jī)上的federation 組件的local_username 參數(shù)值.

          list_parameters [-p vhost]

          列出虛擬主機(jī)上的所有參數(shù).

          示例:

          rabbitmqctl list_parameters

          此命令用于列出默認(rèn)虛擬主機(jī)上的所有參數(shù).

          策略管理

          策略用于在集群范圍的基礎(chǔ)上用于控制和修改隊(duì)列和交換機(jī)的行為. 策略應(yīng)用于虛擬主機(jī),由name, pattern, definition或可選的priority組成. 策略可被設(shè)置,清除和列舉.

          set_policy [-p vhost] [--priority priority] [--apply-to apply-to] {name} {pattern} {definition}

          設(shè)置策略.

          name

          策略名稱(chēng).

          pattern

          正則表達(dá)式, 匹配要應(yīng)用的資源

          definition

          策略的定義,JSON形式.在大多數(shù)shells中,你很可能需要引用這個(gè)

          priority

          策略的整數(shù)優(yōu)先級(jí). 數(shù)字越高則優(yōu)先級(jí)越高.默認(rèn)是0.

          apply-to

          策略適用的對(duì)象類(lèi)型,其值可為 "queues", "exchanges" 或 "all".默認(rèn)是"all".

          例如:

          rabbitmqctl set_policy federate-me "^amq." '{"federation-upstream-set":"all"}'

          此命令在默認(rèn)虛擬主機(jī)上設(shè)置策略為federate-me,這樣內(nèi)建的交換器將進(jìn)行聯(lián)合.

          clear_policy [-p vhost] {name}

          清除策略.

          name

          要清除的策略名稱(chēng).

          例如:

          rabbitmqctl clear_policy federate-me

          此命令來(lái)清除默認(rèn)虛擬主機(jī)上的federate-me 策略.

          list_policies [-p vhost]

          顯示虛擬主機(jī)上的所有策略.

          例如:

          rabbitmqctl list_policies

          此命令會(huì)顯示默認(rèn)虛擬主機(jī)上的所有策略.

          服務(wù)器狀態(tài)

          服務(wù)器狀態(tài)查詢查詢服務(wù)器返回一個(gè)結(jié)果以制表符分隔的列表. 某些查詢(list_queueslist_exchangeslist_bindings, 和 list_consumers) 接受一個(gè)可選的vhost 參數(shù). 如果這個(gè)參數(shù)出現(xiàn)了,那么它必須指定在查詢的后面.

          list_queues, list_exchanges and list_bindings 命令接受一個(gè)可選的虛擬主機(jī)參數(shù)以顯示其結(jié)果.默認(rèn)值為"/".

          list_queues [-p vhost] [queueinfoitem ...]

          返回隊(duì)列的詳細(xì)信息. 如果無(wú)-p標(biāo)志,將顯示/虛擬主機(jī)上的隊(duì)列詳情."-p" 標(biāo)志可用來(lái)覆蓋此默認(rèn)值.

          queueinfoitem 參數(shù)用于指示哪些隊(duì)列信息項(xiàng)會(huì)包含在結(jié)果集中.結(jié)果集的列順序?qū)⑵ヅ鋮?shù)的順序.queueinfoitem 可以是下面列表中的任何值:

          name

          非ASCII字符的隊(duì)列名稱(chēng).

          durable

          服務(wù)器重啟后,隊(duì)列是否能幸存.

          auto_delete

          不再使用時(shí),是否需要自動(dòng)刪除隊(duì)列.

          arguments

          隊(duì)列參數(shù).

          policy

          應(yīng)用到隊(duì)列上的策略名稱(chēng).

          pid

          關(guān)聯(lián)隊(duì)列的Erlang進(jìn)程ID.

          owner_pid

          表示隊(duì)列專(zhuān)用所有者的代表連接的Erlang進(jìn)程ID.如果隊(duì)列是非專(zhuān)用的,此值將為空.

          exclusive

          True:如果隊(duì)列是專(zhuān)用的(即有owner_pid), 反之false

          exclusive_consumer_pid

          表示此channel的專(zhuān)用消費(fèi)者訂閱到此隊(duì)列的Erlang進(jìn)程Id. 如果沒(méi)有專(zhuān)用消費(fèi)者,則為空.

          exclusive_consumer_tag

          專(zhuān)用消費(fèi)者訂閱到此隊(duì)列的Consumer tag.如果沒(méi)有專(zhuān)用消費(fèi)者,則為空.

          messages_ready

          準(zhǔn)備分發(fā)給客戶端的消息數(shù)目.

          messages_unacknowledged

          分發(fā)到客戶端但尚未應(yīng)答的消息數(shù)目.

          messages

          準(zhǔn)備分發(fā)和未應(yīng)答消息的總和(隊(duì)列深度).

          messages_ready_ram

          駐留在ram中messages_ready的消息數(shù)目.

          messages_unacknowledged_ram

          駐留在ram中messages_unacknowledged的消息數(shù)目.

          messages_ram

          駐留在ram中的消息總數(shù).

          messages_persistent

          隊(duì)列中持久化消息的數(shù)目(對(duì)于瞬時(shí)隊(duì)列總是0).

          message_bytes

          隊(duì)列中所有消息體的大小總和.這不包括消息屬性(包括headers) 或任何開(kāi)銷(xiāo)(overhead)。

          message_bytes_ready

          類(lèi)似于message_bytes ,但只統(tǒng)計(jì)準(zhǔn)備投遞給clients的那些消息.

          message_bytes_unacknowledged

          類(lèi)似于message_bytes ,但只統(tǒng)計(jì)那些已經(jīng)投遞給clients但還未應(yīng)答的消息

          message_bytes_ram

          類(lèi)似于message_bytes ,但只統(tǒng)計(jì)那些在RAM中的消息

          message_bytes_persistent

          類(lèi)似于message_bytes ,但只統(tǒng)計(jì)那些持久化的消息

          head_message_timestamp

          如果存在,只顯示隊(duì)列中第1個(gè)消息的timestamp屬性. 消息的時(shí)間戳只出現(xiàn)在分頁(yè)情況下.

          disk_reads

          從隊(duì)列啟動(dòng)開(kāi)如,已從磁盤(pán)上讀取該隊(duì)列的消息總次數(shù).

          disk_writes

          從隊(duì)列啟動(dòng)開(kāi)始,已向磁盤(pán)隊(duì)列寫(xiě)消息總次數(shù).

          consumers

          消費(fèi)者數(shù)目.

          consumer_utilisation

          時(shí)間分?jǐn)?shù)(0.0與1.0之間),隊(duì)列可立即向消費(fèi)者投遞消息. 它可以小于1.0,如果消費(fèi)者受限于網(wǎng)絡(luò)堵塞或預(yù)提取數(shù)量.

          memory

          與隊(duì)列相關(guān)的Erlang進(jìn)程消耗的內(nèi)存字節(jié)數(shù),包括棧,堆以及內(nèi)部結(jié)構(gòu).

          slave_pids

          如果隊(duì)列是鏡像的,這里給出的是當(dāng)前slaves的IDs.

          synchronised_slave_pids

          如果隊(duì)列是鏡像的,當(dāng)前slaves的IDs是master同步的- 即它們可在無(wú)消息丟失的情況下,接管master.

          state

          隊(duì)列狀態(tài).正常情況下是'running', 但如果隊(duì)列正在同步也可能是"{syncing, MsgCount}". 處于集群下的節(jié)點(diǎn)如果掉線了,隊(duì)列狀態(tài)交顯示'down' (大多數(shù)queueinfoitems 將不可用).

          如果沒(méi)有指定queueinfoitems,那么將顯示隊(duì)列名稱(chēng)和隊(duì)列深度.

          例如:

          rabbitmqctl list_queues -p /myvhost messages consumers

          此命令顯示了/myvhost虛擬主機(jī)中每個(gè)隊(duì)列的深度和消費(fèi)者數(shù)目.

          list_exchanges [-p vhost] [exchangeinfoitem ...]

          返回交換器細(xì)節(jié).如果沒(méi)有指定"-p"選項(xiàng),將返回 / 虛擬主機(jī)的細(xì)節(jié).  "-p" 選項(xiàng)可用來(lái)覆蓋默認(rèn)虛擬主機(jī).

          exchangeinfoitem 參數(shù)用來(lái)表示哪些交換器信息要包含在結(jié)果中. 結(jié)果集中列的順序?qū)⑴c參數(shù)順序保持一致. exchangeinfoitem 可接受下面的列表中任何值:

          name

          交換器名稱(chēng).

          type

          交換器類(lèi)型(如[directtopicheadersfanout]).

          durable

          當(dāng)服務(wù)器重啟時(shí),交換器是否能復(fù)活.

          auto_delete

          當(dāng)不再使用時(shí),交換器是否需要自動(dòng)刪除.

          internal

          交換器是否是內(nèi)部的,即不能由client直接發(fā)布.

          arguments

          交換器參數(shù)


          policy

          應(yīng)用到交換器上的策略名稱(chēng).

          如果沒(méi)有指定exchangeinfoitems,那么將會(huì)顯示交換器類(lèi)型和類(lèi)型

          例如:

          rabbitmqctl list_exchanges -p /myvhost name type

          此命令會(huì)顯示/myvhost中每個(gè)交換器的名稱(chēng)和類(lèi)型.

          list_bindings [-p vhost] [bindinginfoitem ...]

          返回綁定細(xì)節(jié).默認(rèn)情況下返回的是 / 虛擬主機(jī)上的綁定詳情.可使用"-p" 標(biāo)記來(lái)覆蓋默認(rèn)虛擬主機(jī).

          bindinginfoitem 參數(shù)用來(lái)表示結(jié)果中包含哪些綁定信息. 結(jié)果集中列的順序?qū)⑵ヅ鋮?shù)的順序.bindinginfoitem可接受下面列表的任意值:

          source_name

          綁定中消息來(lái)源的名稱(chēng). C中非ASCII轉(zhuǎn)義字符.

          source_kind

          綁定中消息來(lái)源的類(lèi)別.當(dāng)前總是exchange. C中非ASCII轉(zhuǎn)義字符.

          destination_name

          綁定中消息目的地名稱(chēng).C中非ASCII轉(zhuǎn)義字符.

          destination_kind

          綁定中消息目的地的種類(lèi). C中非ASCII轉(zhuǎn)義字符.

          routing_key

          綁定的路由鍵,C中非ASCII轉(zhuǎn)義字符.

          arguments

          綁定參數(shù).

          如果沒(méi)有指定bindinginfoitems,將會(huì)顯示所有上述條目.

          例如:

          rabbitmqctl list_bindings -p /myvhost exchange_name queue_name

          此命令來(lái)顯示/myvhost虛擬主機(jī)上綁定的交換器名稱(chēng)和隊(duì)列名稱(chēng).

          list_connections [connectioninfoitem ...]

          返回TCP/IP連接統(tǒng)計(jì).

          connectioninfoitem 參數(shù)用來(lái)表示在結(jié)果中包含哪些連接信息. 結(jié)果集中列的順序?qū)⑵ヅ鋮?shù)的順序.               connectioninfoitem可接受下面列表的任意值:

          pid

          與連接相關(guān)的Erlang進(jìn)程ID.

          name

          連接的可讀名稱(chēng).

          port

          服務(wù)器端口.

          host

          返回反向DNS獲取的服務(wù)器主機(jī)名稱(chēng),或 IP地址(反向DNS解析失敗) 或者未啟用.

          peer_port

          Peer 端口.

          peer_host
             返回反向DNS獲取的Peer主機(jī)名稱(chēng),或 IP地址(反向DNS解析失敗) 或者未啟用.
          ssl

          用Boolean來(lái)表示連接是否是SSL的.

          ssl_protocol

          SSL 協(xié)議(如. tlsv1)

          ssl_key_exchange

          SSL key exchange 算法 (如 rsa)

          ssl_cipher

          SSL cipher 算法 (如aes_256_cbc)

          ssl_hash

          SSL hash 函數(shù) (如 sha)

          peer_cert_subject

          peer的 SSL 安全證書(shū)的主體, RFC4514形式.

          peer_cert_issuer

          peer的 SSL安全證書(shū)的發(fā)行者, RFC4514 形式.

          peer_cert_validity

          peer的SSL安全證書(shū)的有效期.

          state

          連接狀態(tài)(可為[startingtuningopeningrunningflowblockingblockedclosingclosed]其中一個(gè)).

          channels
          使用連接的channel數(shù)。
          protocol

          使用的AMQP協(xié)議版本(當(dāng)前是{0,9,1} 或{0,8,0}). 注意,如果client請(qǐng)求的是AMQP 0-9 連接, 我們會(huì)視為AMQP 0-9-1.

          auth_mechanism

          使用的SASL認(rèn)證機(jī)制,如PLAIN.

          user

          與連接相關(guān)的用戶名

          vhost

          虛擬主機(jī)名稱(chēng),C中非ASCII轉(zhuǎn)義字符.

          timeout

          連接超時(shí)/協(xié)商的心跳間隔,秒為單位.

          frame_max

          最大 frame 大小(字節(jié)).

          channel_max
                  此連接上channel的最大數(shù)目.
          client_properties

          連接建立期間由client發(fā)送的信息屬性.

          recv_oct

          Octets已收到.

          recv_cnt

          Packets 已收到.

          send_oct

          Octets 發(fā)送.

          send_cnt

          Packets 發(fā)送.

          send_pend

          發(fā)送隊(duì)列大小.

          connected_at

          連接建立的日期和時(shí)間,當(dāng)作timestamp.

          如果沒(méi)有connectioninfoitems, 那么會(huì)顯示user, peer host, peer port,流量控制和內(nèi)存塊狀態(tài)的時(shí)間

          例如:

          rabbitmqctl list_connections send_pend port

          此命令會(huì)顯示發(fā)送隊(duì)列的大小以及第個(gè)連接的服務(wù)器端口.

          list_channels [channelinfoitem ...]

          返回所有當(dāng)前channel上的信息,邏輯容器執(zhí)行大部分 AMQP命令.這將包含最初AMQP連接的部分,以及不同插件和其它擴(kuò)展創(chuàng)建的channels.

          channelinfoitem 參數(shù)用來(lái)表示在結(jié)果集中包含哪些channel信息.結(jié)果集中列的順序?qū)⑵ヅ鋮?shù)的順序. channelinfoitem 可接受下面列表中的任何一個(gè)參數(shù):

          pid

          與連接相關(guān)的Erlang進(jìn)程ID.

          connection

          channel所屬的連接Erlang進(jìn)程ID.

          name

          channel的可讀名稱(chēng).

          number

          channel的數(shù)目,在一個(gè)連接中,它有唯一的標(biāo)識(shí)符.

          user

          與channel相關(guān)的用戶名稱(chēng).

          vhost

          channel操作的虛擬主機(jī).

          transactional

          True:如果channel處于事務(wù)模式,其它情況為false.

          confirm

          True:如果channel是確認(rèn)模式,其它情況為false.

          consumer_count

          在channel中接收消息的邏輯AMQP消費(fèi)者數(shù)目.

          messages_unacknowledged

          在channel中消息已投遞但還未應(yīng)答的消息數(shù)目.

          messages_uncommitted

          在channel中已收到消息但還沒(méi)有提交事務(wù)的消息個(gè)數(shù).

          acks_uncommitted
          確認(rèn)收到一個(gè)還未提交的事務(wù)數(shù)。
          messages_unconfirmed
          尚未確認(rèn)已發(fā)布消息的數(shù)目。在通道不在確認(rèn)模式下時(shí),這將是0。
          prefetch_count

          新消費(fèi)者QoS預(yù)提取限制, 0表示無(wú)上限.

          global_prefetch_count

          整個(gè)channel QoS預(yù)提取限制, 0表示無(wú)上限.

          如果沒(méi)有指定channelinfoitems,那么將顯示pid, user, consumer_count,messages_unacknowledged.


          例如:

          rabbitmqctl list_channels connection messages_unacknowledged

          此命令會(huì)顯示每個(gè)channel中連接進(jìn)程和未應(yīng)答消息的數(shù)目.

          list_consumers [-p vhost]

          列舉消費(fèi)者, 即訂閱隊(duì)列的消息流. 每行將打印出由制表符分隔的已訂閱隊(duì)列的名稱(chēng),創(chuàng)建并管理訂閱的channel進(jìn)程的標(biāo)識(shí),channel中訂閱的consumer tag唯一標(biāo)識(shí)符, boolean值表示投遞到此消費(fèi)者的消息是否需要應(yīng)答,整數(shù)值表示表示預(yù)提取限制(為0表示無(wú)限制), 以及關(guān)于此消費(fèi)者的任何其它參數(shù).

          status

          顯示 broker 狀態(tài)信息,如當(dāng)前Erlang節(jié)點(diǎn)上運(yùn)行的應(yīng)用程序, RabbitMQ 和 Erlang 的版本信息, OS 名稱(chēng), 內(nèi)存和文件描述符統(tǒng)計(jì)信息. (查看cluster_status 命令來(lái)找出那些節(jié)點(diǎn)是集群化的以及正在運(yùn)行的.)

          例如:

          rabbitmqctl status

          此命令顯示了RabbitMQ broker的相關(guān)信息.

          environment

          顯示每個(gè)運(yùn)行程序環(huán)境中每個(gè)變量的名稱(chēng)和值.

          report

          為所有服務(wù)器狀態(tài)生成一個(gè)服務(wù)器狀態(tài)報(bào)告,輸出應(yīng)該重定向到一個(gè)文件.

          例如:

          rabbitmqctl report > server_report.txt

          此命令創(chuàng)建了一個(gè)服務(wù)器報(bào)告,可將它附著在支持請(qǐng)求的電子郵件中.

          eval {expr}

          執(zhí)行任意Erlang表達(dá)式.

          例如:

          rabbitmqctl eval 'node().'

          此命令用于返回rabbitmqctl連接的節(jié)點(diǎn)名稱(chēng)

          雜項(xiàng)

          close_connection {connectionpid} {explanation}

          connectionpid

          要關(guān)閉的與連接相關(guān)的Erlang進(jìn)程ID.

          explanation

          解釋字符串.

          指示broker關(guān)閉與Erlang進(jìn)程id相關(guān)的連接(可通過(guò)list_connections 命令查看), 通過(guò)為連接客戶端傳遞解釋字符串(作為AMQP連接關(guān)閉協(xié)議的一部分).

          例如:

          rabbitmqctl close_connection "<rabbit@tanto.4262.0>" "go away"

          此命令指示RabbitMQ broker關(guān)閉與Erlang 進(jìn)程id<rabbit@tanto.4262.0>相關(guān)聯(lián)的連接, 同時(shí)向客戶端傳遞go away字符串.

          trace_on [-p vhost]

          vhost

          要開(kāi)啟追蹤的虛擬主機(jī)的名稱(chēng).

          開(kāi)啟追蹤.注意,追蹤狀態(tài)不是持久化的; 如果服務(wù)器重啟,追蹤狀態(tài)將會(huì)丟失.

          trace_off [-p vhost]

          vhost

          要停止追蹤的虛擬主機(jī)名稱(chēng).

          停止追蹤.

          set_vm_memory_high_watermark {fraction}

          fraction
          當(dāng)一個(gè)浮點(diǎn)數(shù)大于或等于0時(shí),會(huì)觸發(fā)流量控制新內(nèi)存閾值部分。

          set_vm_memory_high_watermark absolute {memory_limit}

          memory_limit

          流程控制觸發(fā)的新內(nèi)存限制, 以字節(jié)來(lái)表示大于或等于0的整數(shù)或以字符串和內(nèi)存單位來(lái)表示(如 512M或1G). 可用的單位是: k, kiB: kibibytes (2^10 bytes) M, MiB: mebibytes (2^20) G, GiB: gibibytes (2^30) kB: kilobytes (10^3) MB: megabytes (10^6) GB: gigabytes (10^9)

          set_disk_free_limit {disk_limit}

          disk_limit

          以整數(shù)或字符串單位的可用磁盤(pán)下限限制(查看vm_memory_high_watermark), 如 512M or 1G. 一旦可用磁盤(pán)空間達(dá)到這個(gè)限制,就會(huì)設(shè)置磁盤(pán)報(bào)警.

          set_disk_free_limit mem_relative {fraction}

          fraction

          相對(duì)于整個(gè)可用內(nèi)存的限制,其值為非負(fù)浮點(diǎn)數(shù). 當(dāng)值小于1.0時(shí)是很危險(xiǎn)的,應(yīng)該謹(jǐn)慎使用.

          posted on 2016-07-30 16:52 胡小軍 閱讀(12801) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): RabbitMQ
          主站蜘蛛池模板: 宁强县| 郯城县| 镇沅| 恩施市| 莒南县| 肃北| 乐平市| 定陶县| 宜都市| 阿瓦提县| 衡东县| 海南省| 东明县| 定结县| 武威市| 尚志市| 奉化市| 苏州市| 永修县| 华安县| 连平县| 德昌县| 天门市| 绥化市| 论坛| 逊克县| 辽宁省| 静宁县| 株洲县| 共和县| 邛崃市| 五大连池市| 玛沁县| 凤台县| 长宁县| 和静县| 孙吴县| 蛟河市| 泰安市| 新野县| 兴宁市|