天天看點

RabbitMQ管理(4)——應用管理

rabbitmqctl stop [pid_file]

用于停止運作RabbitMQ的Erlang虛拟機和RabbitMQ服務應用。如果指定了pid_file,還需要等待指定程序的結束。其中pid_file是通過調用rabbitmq-server啟動RabbitMQ服務時建立的,預設情況下存放于Mnesia目錄中,可以通過RABBITMQ_PID_FILE這個環境變量來改變存放路徑。注意,如果是rabbitmq-server –detach啟動的RabbitMQ服務則不會生成pid_file這個檔案。

示例如下:

rabbitmqctl shutdown

用于停止運作RabbitMQ的Erlang虛拟機和RabbitMQ服務應用。執行這個指令會阻塞直到Erlang虛拟機程序的退出。如果RabbitMQ沒有成功關閉,則會傳回一個非零值。這個指令和rabbitmqctl stop的不同的是,它不需要指定pid_file而可以阻塞等待指定程序的關閉。

rabbitmqctl stop_app

停止RabbitMQ服務應用,但是Erlang虛拟機還是處于運作狀态。此指令優先執行其他管理操作(這些管理操作需要先停止RabbitMQ應用),比如rabbitmqctl reset。

rabbitmqctl start_app

啟動RabbitMQ應用。此指令典型的用途是在執行了其他管理操作之後,重新啟動之前停止的RabbitMQ應用,譬如rabbitmqctl reset。

rabbitmqctl wait [pid_file]

等待RabbitMQ應用的啟動。它會等到pid_file的建立,然後等待pid_file中的所代表的程序啟動。當指定的程序沒有啟動RabbitMQ應用而關閉時将會傳回失敗。

rabbitmqctl reset

将RabbitMQ節點重置還原到最初狀态,包括從原所在的叢集中删除此節點,從管理資料庫中删除所有的配置資料,如已配置的使用者、vhost等,以及删除所有的持久化消息。執行rabbitmqctl reset指令前必須停止RabbitMQ應用(比如先執行rabbitmqctl stop_app)。

rabbitmqctl force_reset

強制将RabbitMQ節點重置還原到最初狀态。不同于rabbitmqctl reset,rabbitmqctl force_reset指令不論目前管理資料庫的狀态和叢集配置是什麼,會無條件地重置節點。它隻能在資料庫或叢集配置已損壞的情況下才可使用。與rabbitmqctl reset指令一下,執行rabbitmqctl force_reset指令前必須先停止RabbitMQ應用。

rabbitmqctl rotate_logs {suffix}

訓示RabbitMQ節點輪換日志檔案。RabbitMQ節點會将原來的日志檔案中的内容追加到“原始名稱+字尾”的日志檔案中,然後再将新的日志内容記錄到新建立的日志中(與原日志檔案同名)。當目标檔案不存在時,将會重新建立。如果不指定suffix,那麼則日志檔案隻是重新打開而不會進行輪換。

示例如下所示,原日志檔案為[email protected][email protected],輪換日志之後,原日志檔案中的内容就被追加到[email protected][email protected]日志中,之後重建立立[email protected][email protected]檔案用來接收新的日志。

rabbitmqctl hipe_compile {directory}

将部分RabbitMQ代碼用HiPE(HiPE是指High Performance Erlang ,是Erlang版的JIT)編譯,并且将編譯後的.beam檔案(beam檔案是Erlang編譯器生成的檔案格式,可以直接加載到Erlang虛拟機中運作的檔案格式)儲存到指定的檔案目錄中。如果這個目錄不存在則會自行建立。如果這個目錄中原本有任何.beam檔案,則會在執行編譯前被删除。如果要使用預編譯的這些檔案,需要設定RABBITMQ_SERVER_CODE_PATH這個環境變量來指定hipe_compile調用的路徑。