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

简介: 本文主要阐述应用与集群相关的一些操作管理命令,包括关闭、重置、开启服务,还有建立集群的一些信息。有关集群搭建更多的信息可以参考RabbitMQ的安装及集群搭建方法。rabbitmqctl stop [pid_file] 用于停止运行RabbitMQ的Erlang虚拟机和RabbitMQ服务应用。

本文主要阐述应用与集群相关的一些操作管理命令,包括关闭、重置、开启服务,还有建立集群的一些信息。有关集群搭建更多的信息可以参考RabbitMQ的安装及集群搭建方法

rabbitmqctl stop [pid_file]
用于停止运行RabbitMQ的Erlang虚拟机和RabbitMQ服务应用。如果指定了pid_file,还需要等待指定进程的结束。其中pid_file是通过调用rabbitmq-server启动RabbitMQ服务时创建的,默认情况下存放于Mnesia目录中,可以通过RABBITMQ_PID_FILE这个环境变量来改变存放路径。注意,如果是rabbitmq-server –detach启动的RabbitMQ服务则不会生成pid_file这个文件。

示例如下:

[root@node1 ~]# rabbitmqctl stop
/opt/rabbitmq/var/lib/rabbitmq/mnesia/rabbit\@node1.pid
Stopping and halting node rabbit@node1
[root@node1 ~]# rabbitmqctl stop
Stopping and halting node rabbit@node1

rabbitmqctl shutdown
用于停止运行RabbitMQ的Erlang虚拟机和RabbitMQ服务应用。执行这个命令会阻塞直到Erlang虚拟机进程的退出。如果RabbitMQ没有成功关闭,则会返回一个非零值。这个命令和rabbitmqctl stop的不同的是,它不需要指定pid_file而可以阻塞等待指定进程的关闭。

示例如下:

[root@node1 ~]# rabbitmqctl shutdown
Shutting down RabbitMQ node rabbit@node1 running at PID 1706
Waiting for PID 1706 to terminate
RabbitMQ node rabbit@node1 running at PID 1706 successfully shut down

rabbitmqctl stop_app
停止RabbitMQ服务应用,但是Erlang虚拟机还是处于运行状态。此命令优先执行其他管理操作(这些管理操作需要先停止RabbitMQ应用),比如rabbitmqctl reset。

示例如下:

[root@node1 ~]# rabbitmqctl stop_app
Stopping rabbit application on node rabbit@node1

rabbitmqctl start_app
启动RabbitMQ应用。此命令典型的用途是在执行了其他管理操作之后,重新启动之前停止的RabbitMQ应用,譬如rabbitmqctl reset。

示例如下:

[root@node1 ~]# rabbitmqctl start_app
Starting node rabbit@node1

rabbitmqctl wait [pid_file]
等待RabbitMQ应用的启动。它会等到pid_file的创建,然后等待pid_file中的所代表的进程启动。当指定的进程没有启动RabbitMQ应用而关闭时将会返回失败。

示例如下:

[root@node1 ~]# rabbitmqctl wait /opt/rabbitmq/var/lib/rabbitmq/mnesia/rabbit\@node1.pid
Waiting for rabbit@node1
pid is 3468
[root@node1 ~]# rabbitmqctl wait /opt/rabbitmq/var/lib/rabbitmq/mnesia/rabbit\@node1.pid
Waiting for rabbit@node1
pid is 3468
Error: process_not_running

rabbitmqctl reset
将RabbitMQ节点重置还原到最初状态,包括从原所在的集群中删除此节点,从管理数据库中删除所有的配置数据,如已配置的用户、vhost等,以及删除所有的持久化消息。执行rabbitmqctl reset命令前必须停止RabbitMQ应用(比如先执行rabbitmqctl stop_app)。

示例如下:

[root@node1 ~]# rabbitmqctl stop_app
Stopping rabbit application on node rabbit@node1
[root@node1 ~]# rabbitmqctl reset
Resetting node rabbit@node1

rabbitmqctl force_reset
强制将RabbitMQ节点重置还原到最初状态。不同于rabbitmqctl reset,rabbitmqctl force_reset命令不论当前管理数据库的状态和集群配置是什么,会无条件地重置节点。它只能在数据库或集群配置已损坏的情况下才可使用。与rabbitmqctl reset命令一下,执行rabbitmqctl force_reset命令前必须先停止RabbitMQ应用。

示例如下:

[root@node1 ~]# rabbitmqctl stop_app
Stopping rabbit application on node rabbit@node1
[root@node1 ~]# rabbitmqctl force_reset
Forcefully resetting node rabbit@node1

rabbitmqctl rotate_logs {suffix}
指示RabbitMQ节点轮换日志文件。RabbitMQ节点会将原来的日志文件中的内容追加到“原始名称+后缀”的日志文件中,然后再将新的日志内容记录到新创建的日志中(与原日志文件同名)。当目标文件不存在时,将会重新创建。如果不指定suffix,那么则日志文件只是重新打开而不会进行轮换。

示例如下所示,原日志文件为rabbit@node1.log和rabbit@node1-sasl.log,轮换日志之后,原日志文件中的内容就被追加到rabbit@node1.log.1和 rabbit@node1-sasl.log.1日志中,之后重新建立rabbit@node1.log和rabbit@node1-sasl.log文件用来接收新的日志。

[root@node1 rabbitmq]# pwd
/opt/rabbitmq/var/log/rabbitmq
[root@node1 rabbitmq]# ll
-rw-r--r-- 1 root root 1024127 Aug 18 11:56 rabbit@node1.log
-rw-r--r-- 1 root root  720553 Aug 17 19:16 rabbit@node1-sasl.log
[root@node1 rabbitmq]# rabbitmqctl rotate_logs .1
Rotating logs to files with suffix ".1"
[root@node1 rabbitmq]# ll
-rw-r--r-- 1 root root       0 Aug 18 12:05 rabbit@node1.log
-rw-r--r-- 1 root root 1024202 Aug 18 12:05 rabbit@node1.log.1
-rw-r--r-- 1 root root       0 Aug 18 12:05 rabbit@node1-sasl.log
-rw-r--r-- 1 root root  720553 Aug 18 12:05 rabbit@node1-sasl.log.1

rabbitmqctl hipe_compile {directory}
将部分RabbitMQ代码用HiPE(HiPE是指High Performance Erlang ,是Erlang版的JIT)编译,并且将编译后的.beam文件(beam文件是Erlang编译器生成的文件格式,可以直接加载到Erlang虚拟机中运行的文件格式)保存到指定的文件目录中。如果这个目录不存在则会自行创建。如果这个目录中原本有任何.beam文件,则会在执行编译前被删除。如果要使用预编译的这些文件,需要设置RABBITMQ_SERVER_CODE_PATH这个环境变量来指定hipe_compile调用的路径。

示例如下:

[root@node1 rabbitmq]# rabbitmqctl hipe_compile /opt/rabbitmq/tmp/rabbit-hipe/ebin
HiPE compiling:  |---------------------------------------------------------|
                 |#########################################################|
Compiled 57 modules in 55s
[root@node1 rabbitmq]# ls /opt/rabbitmq/tmp/rabbit-hipe/ebin
array.beam              proplists.beam                    rabbit_misc.beam
credit_flow.beam        qlc.beam                          rabbit_msg_file.beam
delegate.beam           queue.beam                        rabbit_msg_store.beam
dict.beam               rabbit_amqqueue.beam              rabbit_msg_store_ets_index.beam
file_handle_cache.beam  rabbit_amqqueue_process.beam      rabbit_net.beam
gb_sets.beam            rabbit_basic.beam                 rabbit_queue_index.beam
gb_trees.beam           rabbit_binary_generator.beam      rabbit_reader.beam
gen.beam                rabbit_binary_parser.beam         rabbit_router.beam
gen_fsm.beam            rabbit_channel.beam               rabbit_trace.beam
gen_server2.beam        rabbit_command_assembler.beam     rabbit_variable_queue.beam
lists.beam              rabbit_event.beam                 rabbit_writer.beam
lqueue.beam             rabbit_exchange.beam              rpc.beam
mnesia.beam             rabbit_exchange_decorator.beam    sets.beam
mnesia_lib.beam         rabbit_exchange_type_direct.beam  sofs.beam
mnesia_tm.beam          rabbit_exchange_type_fanout.beam  ssl.beam
orddict.beam            rabbit_exchange_type_topic.beam   ssl_connection.beam
ordsets.beam            rabbit_framing_amqp_0_9_1.beam    ssl_record.beam
pmon.beam               rabbit_guid.beam                  tls_connection.beam
priority_queue.beam     rabbit_limiter.beam               tls_record.beam
相关实践学习
RocketMQ一站式入门使用
从源码编译、部署broker、部署namesrv,使用java客户端首发消息等一站式入门RocketMQ。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
目录
相关文章
|
3月前
|
消息中间件 Docker 容器
Docker中的RabbitMQ已经启动运行,但是管理界面打不开
Docker中的RabbitMQ已经启动运行,但是管理界面打不开
|
1天前
|
消息中间件 存储 数据库
RabbitMQ入门指南(二):架构和管理控制台的使用
RabbitMQ是一个高效、可靠的开源消息队列系统,广泛用于软件开发、数据传输、微服务等领域。本文主要介绍了RabbitMQ架构和管理控制台的使用等内容。
RabbitMQ入门指南(二):架构和管理控制台的使用
|
5月前
|
消息中间件 数据安全/隐私保护 Windows
windows下RabbitMQ安装后,无法进入web管理页面问题
windows下RabbitMQ安装后,无法进入web管理页面问题
135 1
|
5月前
|
消息中间件 关系型数据库 MySQL
消息中间件系列教程(05) -RabbitMQ -管理控制台的使用
消息中间件系列教程(05) -RabbitMQ -管理控制台的使用
25 1
|
1月前
|
消息中间件 存储 NoSQL
【Redis项目实战】使用Springcloud整合Redis分布式锁+RabbitMQ技术实现高并发预约管理处理系统
【Redis项目实战】使用Springcloud整合Redis分布式锁+RabbitMQ技术实现高并发预约管理处理系统
|
5月前
|
消息中间件
RabbitMQ管理命令
RabbitMQ管理命令
|
5月前
|
消息中间件 数据安全/隐私保护 Windows
windows下RabbitMQ安装后,无法进入web管理页面问题
windows下RabbitMQ安装后,无法进入web管理页面问题
104 0
|
消息中间件 数据安全/隐私保护
解决第一次安装后无法访问RabbitMQ的UI管理界面问题#127.0.0.1:15672无法访问#localhhost:15672无法访问
解决第一次安装后无法访问RabbitMQ的UI管理界面问题#127.0.0.1:15672无法访问#localhhost:15672无法访问
504 0
|
消息中间件 存储 Java
Springboot----项目整合微信支付与RabbitMQ(使用RabbitMQ延迟插件实现订单管理)
主要介绍如何在Springboot项目支付模块中使用RabbitMQ实现延迟队列,采用的是RabbitMQ的延迟插件
240 0
Springboot----项目整合微信支付与RabbitMQ(使用RabbitMQ延迟插件实现订单管理)