文章目录
- 一、RabbitMQ安装
- 1.1 二进制安装
- 1.2 rabbitmqctl工具
- 1.3 docker安装
- 二、rabbitmq基础命令
- 2.1 多租户与权限类
- 2.1.1 创建虚拟主机
- 2.1.2 查看虚拟主机信息
- 2.1.3 删除虚拟主机
- 2.1.4 给用户授权
- 2.1.5 清除用户权限
- 2.1.6 查看权限
- 2.2 用户管理类
- 2.2.1 创建用户
- 2.2.2 查看用户
- 2.2.3 删除用户
- 2.2.4 用户指定角色
- 2.2.5 更改用户密码
- 2.2.6 清除用户密码
- 2.2.7 密码验证用户
- 2.3 插件使用类
- 2.3.1 启动插件
- 2.3.2 关闭插件
- 2.3.3 查看插件使用情况
- 2.4 应用管理类
- 2.4.1 启动rabbitmq服务
- 2.4.1.1 前台启动
- 2.4.1.2 后台启动
- 2.4.2 关闭rabbitmq服务
- 2.4.2.1 指定pid文件阻塞进程关闭(stop)
- 2.4.2.2 直接阻塞进程关闭(shutdown)
- 2.4.3 只停止应用服务
- 2.4.3 启动应用服务
- 2.4.4 等待应用服务启动
- 2.4.5 先停止应用再重置rabbitmq服务状态
- 2.4.6 强制重置rabbitmq服务状态
- 2.4.7 轮换日志文件(已弃用)
- 2.4.8 生成HiPE编译代码.beam文件(已弃用)
一、RabbitMQ安装
1.1 二进制安装
需要提前下载两个安装包,两个包的版本必须对应。
- Erlang官网
- RabbitMQ官网
- 安装Erlang环境,注意版本要与RabbitMQ版本对应。
- 安装包准备。
[root@localhost rabbitmq]# ll
-rw-r--r-- 1 root root 102985011 Dec 10 2022 otp_src_25.0.tar.gz
-rw-r--r-- 1 root root 15288836 Dec 10 2022 rabbitmq-server-generic-unix-3.11.4.tar.xz
- 解压安装erlang环境。
[root@localhost rabbitmq]# tar zxf otp_src_25.0.tar.gz
[root@localhost rabbitmq]# cd otp_src_25.0/
[root@localhost otp_src_25.0]# ./configure --prefix=/opt/erlang
- 解决报错问题,缺少安装包。
[root@localhost otp_src_25.0]# yum install -y ncurses-devel
- 编译安装
[root@localhost otp_src_25.0]# make && make install
- 配置环境变量
[root@localhost profile.d]# pwd
/etc/profile.d
[root@localhost profile.d]# cat erlang.sh
export ERLANG_HOME=/opt/erlang
export PATH=$ERLANG_HOME/bin:$PATH
[root@localhost profile.d]# source erlang.sh
- 检查环境,输入erl命令进入erlang环境。
[root@localhost profile.d]# erl
Erlang/OTP 25 [erts-13.0] [source] [64-bit] [smp:8:8] [ds:8:8:10] [async-threads:1]
Eshell V13.0 (abort with ^G)
1>
- 安装rabbitmq另外一个依赖。
[root@localhost ~]# yum install -y socat
- 安装rabbitmq,解压安装。
[root@localhost rabbitmq]#tar -xvf rabbitmq-server-generic-unix-3.11.4.tar.xz
[root@localhost rabbitmq]# mv rabbitmq-server-3.11.4 rabbitmq
[root@localhost rabbitmq]# cd rabbitmq/
- 配置rabbitmq服务的环境变量。
[root@localhost profile.d]# pwd
/etc/profile.d
[root@localhost profile.d]# cat rabbitmq.sh
export RABBITMQ_HOME=/opt/backup/rabbitmq/rabbitmq
export PATH=$RABBITMQ_HOME/sbin:$PATH
[root@localhost profile.d]# source rabbitmq.sh
- 启动服务。
- 前台运行方式启动
[root@localhost rabbitmq]# rabbitmq-server start
- 后台运行
[root@localhost rabbitmq]# rabbitmq-server -detached
- 开启Web管理界面插件。
rabbitmq-plugins enable rabbitmq_management
- 默认用户guest登陆失败,3.0版本之后默认用户只能本机登录,所以我们需要创建新用户。
12. 创建用户
[root@localhost rabbitmq]# rabbitmqctl add_user qingjun citms
13. 指定角色
[root@localhost rabbitmq]# rabbitmqctl set_user_tags qingjun administrator
用户角色5种类型:
- none:无任何角色。新创建的用户的角色默认为none。
- management:可以访问Web管理页面。
- policymaker:包含management的所有权限,并且可以管理策略(policy)和参数(parameter)。
- monitoring:包含management的所有权限,并且可以看到所有连接(connections)、信道(channels)以及节点相关的信息。
- administartor:包含monitoring的所有权限,并且可以管理用户、虚拟主机、权限、策略、参数等等。
- administator代表了最高的权限。
14. 用户授权。
命令格式:rabbitmqctl set_permissions [-p vhosts] {user} {conf} {write} {read}
- [-p vhost]:授予用户访问权限的 vhost 名称,如果不写默认为 /。
- user:指定哪个用户可以访问该vhost的权限。
- conf:用户在哪些资源上拥有可配置权限(支持正则表达式)。
- write:用户在哪些资源上拥有写权限(支持正则表达式)。
- read:用户在哪些资源上拥有读权限(支持正则表达式)。
[root@localhost rabbitmq]# rabbitmqctl set_permissions -p "/" qingjun ".*" ".*" ".*"
Setting permissions for user "qingjun" in vhost "/" ...
- 新账户qingjun登陆页面成功。
1.2 rabbitmqctl工具
rabbitmqctl工具作用:
- 是用来管理 RabbitMQ中间件的命令行工具,通过连接各个RabbitMQ节点来执行所有操作。
- 如果有节点没有运行,将显示诊断信息: 不能到达或因不匹配的 Erlangcookie 而拒绝连接
工具的标准语法:
- rabbitmgctl [-n node] [-t timeout] [-q] {command) [command options…]
- [ ]表示可选参数,{ }表示必选参数。
- [-n node]:默认节点是“rabbit@hostname”,hostname是主机名称。在一个名为“node.hidden.com’的主机上,RabbitMQ节点的名称通常是 rabbit@node,可以在RABBITMQ NODENAME 参数在启动时设置。
- [-q]:表示来启用 quiet 模式,这样可以屏蔽一些消息的输出。默认不开启 quiet 模式。
- [-t timeout]:表示操作超时时间 (秒为单位),只适用于“list xxx”类型的命令,默认是无穷大。
- 测试效果
1.3 docker安装
1、先把前面二进制安装的rabbitmq服务关闭,防止端口冲突。
[root@localhost Python-3.8.6]# rabbitmqctl shutdown
Shutting down RabbitMQ node rabbit@localhost running at PID 8074
Waiting for PID 8074 to terminate
RabbitMQ node rabbit@localhost running at PID 8074 successfully shut down
2、docker安装。指定容器名为myrabbit,新增一个账户qingjun1,密码为123456,并开放一些端口。
[root@localhost Python-3.8.6]# docker run -d --name myrabbit -e RABBITMQ_DEFAULT_USER=qingjun1 -e RABBITMQ_DEFAULT_PASS=123456 -p 15672:15672 -p 5672:5672 -p 25672:25672 -p 61613:61613 -p 1883:1883 rabbitmq:3-management
[root@localhost Python-3.8.6]# docker ps|grep myrabbit
03fecc33c9e6 rabbitmq:3-management "docker-entrypoint.s…" 39 seconds ago Up 38 seconds 4369/tcp, 0.0.0.0:1883->1883/tcp, 5671/tcp, 0.0.0.0:5672->5672/tcp, 15671/tcp, 0.0.0.0:15672->15672/tcp, 0.0.0.0:25672->25672/tcp, 0.0.0.0:61613->61613/tcp, 15691-15692/tcp myrabbit
3、登录页面
二、rabbitmq基础命令
在上面给用户授权时,命令中有一个新出现的词,vhost。那它是什么呢?为什么命令中会需要指向它,我们来简单了解一下。
- vhost的由来?
- 当需要有很多个用户时,但我们做不到给不同的用户分配可以访问哪些交换器、队列的权限。比如exchangeA 和queueA 只能让用户A访问,exchangeB 和queueB 只能让用户B访问,想要达到这种需求,该怎么实现呢?
- 可以给exchangeA 和queueA创建一个vhostA,为exchangeB 和queueB 创建vhostB,这样就隔离开来了。
- 所以说,vhost是rabbitmq分配权限的最小细粒度。vhost中包含许多的exchanges,queues,bingdings)。
- vhost是什么?
- 每一个 RabbitMQ服务器都能创建虚拟的消息服务器,我们称之为虚拟主机(virtual host),简称为 vhost。
- 每一个 vhost 本质上是一个独立的小型 RabbitMQ服务器,拥有自己独立的队列、交换器及绑定关系等,并且它拥有自己独立的权限。
- vhost 是 AMQP 概念的基础,客户端在连接的时候必须制定一个 vhost。
- RabbitMQ默认创建的 vhost 为“/”,如果不需要多个 host 或者对 vhost 的概念不是很理解,那么用这个默认的vhost 也是非常合理的,使用默认的用户名 guest 和密码 guest 就可以访问它。
- vhost的作用?
- vhost 就像是虚拟机与物理服务器一样,它们在各个实例间提供逻辑上的分离,为不同程序安全保密地运行数据,它既能将同一个RabbitMQ中的众多客户区分开,又可以避免队列和交换器等命名冲突。
- vhost 之间是绝对隔离的,无法将 vhost1 中的交换器与 host2 中的队列进行绑定,这样既保证了安全性,又可以确保可移植性。
- RabbitMQ中的授权是针对谁来说的?为什么?
- 在 RabbitMO 中,权限控制则是以 vhost 为单位的。
- 当创建一个用户时,用户通常会被指派给至少一个 vhost,并且只能访问被指派的 vhost 内的队列、交换器和绑定关系等。因此,RabbitMQ中的授予权限是指在 vhost 级别对用户而言的权限授予。
2.1 多租户与权限类
2.1.1 创建虚拟主机
命令格式:rabbitmqctl add_vhost {vhost)
# 创建一个名为wuhan的vhost。
[root@localhost rabbitmq]# rabbitmqctl add_vhost wuhan
2.1.2 查看虚拟主机信息
命令格式: rabbitmqctl list_vhosts [vhostinfoitem…]来罗列当前vhost 的相关信息。目前 vhostinfoitem 的取值有 2个。
- name: 表示 vhost 的名称。
- tracing: 表示是否使用了 RabbitMQ的 trace 功能。
初识tracing插件:
- 对,你没看错,它是个插件,可以用命令手动开启关闭它,打开时在查询主机状态显示为"ture",关闭时显示状态为“false”。
- 开启插件能跟踪 RabbitMQ 中消息的流入流出情况,会对流入流出的消息进行封装,然后将封装后的消息日志存入相应的 trace 文件之中。
- rabbitmq tracing 插件相当于 Firehose 的 GUI 版本,至于Firehose是啥东东?什么作用?咱们后面会谈到。
#查看所有虚拟主机的名称信息。
[root@localhost rabbitmq]# rabbitmqctl list_vhosts name
Listing vhosts ...
name
wuhan
/
#查看所有虚拟主机的名称、是否开启tracing插件信息。
[root@localhost rabbitmq]# rabbitmqctl list_vhosts name tracing
Listing vhosts ...
name tracing
wuhan false
/ false
#给默认创建的vhost开启tracing插件。
[root@localhost rabbitmq]# rabbitmqctl trace_on
Starting tracing for vhost "/" ...
Trace enabled for vhost /
[root@localhost rabbitmq]# rabbitmqctl list_vhosts name tracing
Listing vhosts ...
name tracing
wuhan false
/ true
2.1.3 删除虚拟主机
命令格式: rabbitmqctl delete_vhost {vhost},其中大括号里面的参数表示 vhost 的名称。
- 删除一个 vhost 同时也会删除其下所有的队列、交换器、绑定关系、用户权限、参数和策略等信息。
[root@localhost rabbitmq]# rabbitmqctl delete_vhost wuhan
Deleting vhost "wuhan" ...
2.1.4 给用户授权
看,又绕回来了,授权命令咱们再巩固一遍。
命令格式: rabbitmgctl set_permissions [-p vhost] {user]{conf}{write}{read}。
- vhost:授予用户访问权限的 vhost 名称,可以设置为默认值,即 vhost 为“/”user: 可以访问指定 vhost 的用户名。
- conf:一个用于匹配用户在哪些资源上拥有可配置权限的正则表达式。可配置指的是队列和交换器的创建及删除之类的操作。
- write:一个用于匹配用户在哪些资源上拥有可写权限的正则表达。可写指的是发布消息。
- read:一个用于匹配用户在哪些资源上拥有可读权限的正则表达式。可读指与消息有关的操作,包括读取消息及清空整个队列等。
#授予qingjun用户可访问虚拟主机wuhan,并在所有资源上都具备可配置、可写及可读的权限,也就是把qingjun用户设置成最高级别的角色。
[root@localhost rabbitmq]# rabbitmqctl set_permissions -p wuhan qingjun ".*" ".*" ".*"
Setting permissions for user "qingjun" in vhost "wuhan" ...
#授予qingjun用户可访问虚拟主机beijing,在以“citms”开头的资源上具备可配置权限,并在所有资源上拥有可写、可读的权限。
[root@localhost rabbitmq]# rabbitmqctl set_permissions -p beijing qingjun "^citms.*" ".*" ".*"
Setting permissions for user "qingjun" in vhost "beijing" ...
2.1.5 清除用户权限
命令格式:rabbitmgctl clear_permissions [-p vhost] {username}。
- vhost:指定禁止用户访问的虚拟主机的名称,默认为“1”。
- username:指定禁止访问特定虚拟主机的用户名称。
[root@localhost rabbitmq]# rabbitmqctl clear_permissions -p wuhan qingjun
Clearing permissions for user "qingjun" in vhost "wuhan" ...
2.1.6 查看权限
- 以虚拟主机vhost视角来进行查看。
#查看wuhan、beijing两个虚拟主机的权限信息。
[root@localhost rabbitmq]# rabbitmqctl list_permissions -p wuhan
Listing permissions for vhost "wuhan" ...
[root@localhost rabbitmq]# rabbitmqctl list_permissions -p beijing
Listing permissions for vhost "beijing" ...
user configure write read
qingjun ^citms.* .* .*
- 以用户视角来进行查看。
#查看qingjun用户的权限信息。
[root@localhost rabbitmq]# rabbitmqctl list_user_permissions qingjun
Listing permissions for user "qingjun" ...
vhost configure write read
/ .* .* .*
beijing ^citms.* .* .*
2.2 用户管理类
一个用户可以跨越多个 vhost 进行授权。针对一至多个 vhost,用户可以被赋予不同级别的访问权限,并使用标准的用户名和密码来认证用户。
- 啥意思呢?用户qingjun对wuhan虚拟主机、beijing虚拟主机的访问权限可以单独设置。
2.2.1 创建用户
命令格式: rabbitmqctl add_user {username] [password}。
- username:表示要创建的用户名称。
- password:表示创建用户登录的密码。
#创建一个用户名为lisi、密码为999的用户。
[root@localhost rabbitmq]# rabbitmqctl add_user lisi 999
2.2.2 查看用户
命令格式:rabbitmqctl list_users
- 每个结果行都包含用户名称,其后紧跟用户的角色 (tags)。
- 用户的角色分为5个类型:
- none: 无任何角色。新创建的用户的角色默认为 none。
- management: 可以访问 Web 管理页面。Web 管理页面在 5.3 节中会有详细介绍
- policymaker:包含 management 的所有权限,并且可以管理策略 (Policy) 和参数(Parameter)。详细内容可参考 6.3 节
- monitoring: 包含 management 的所有权限,并且可以看到所有连接、信道及节点相关的信息。
- administartor: 包含 monitoring 的所有权限,并且可以管理用户、虚拟主机、权限、策略、参数等。administator 代表了最高的权限。
2.2.3 删除用户
命令格式:rabbitmgctl delete_user {username}
- username:表示要删除的用户名称。
#查看用户,zhansan存在。
[root@localhost rabbitmq]# rabbitmqctl list_users
Listing users ...
user tags
qingjun [administrator]
zhangsan []
lisi []
guest [administrator]
#删除用户zhangsan。
[root@localhost rabbitmq]# rabbitmqctl delete_user zhangsan
Deleting user "zhangsan" ...
#查看用户,zhangsan不存在。
[root@localhost rabbitmq]# rabbitmqctl list_users
Listing users ...
user tags
qingjun [administrator]
lisi []
guest [administrator]
2.2.4 用户指定角色
命令格式: rabbitmqctl set_user_tags {username} {tag …}
- username:表示需要设置角色的用户名称。
- tag:参数用于设置 0 个、1个或者多个的角色,设置之后任何之前现有的身份都会被删除。
- 用户的角色分为 5 种类型:
- none: 无任何角色。新创建的用户的角色默认为 none。
- management: 可以访问 Web 管理页面。
- policymaker: 包含 management 的所有权限,并且可以管理策略 (Policy) 和参数(Parameter)。
- monitoring: 包含 management 的所有权限,并且可以看到所有连接、信道及节点相关的信息。
- administartor: 包含 monitoring 的所有权限,并且可以管理用户、虚拟主机、权限、策略、参数等。administator 代表了最高的权限。
1. 查看lisi用户没有任何角色。
[root@localhost rabbitmq]# rabbitmqctl list_users
Listing users ...
user tags
qingjun [administrator]
lisi []
guest [administrator]
2. 给lisi用户设置monitoring角色。
[root@localhost rabbitmq]# rabbitmqctl set_user_tags lisi monitoring
Setting tags for user "lisi" to [monitoring] ...
3. 查看lisi用户有monitoring角色。
[root@localhost rabbitmq]# rabbitmqctl list_users -q
user tags
qingjun [administrator]
lisi [monitoring]
guest [administrator]
4.给lisi用户设置policymaker角色。
[root@localhost rabbitmq]# rabbitmqctl set_user_tags lisi policymaker -q
5.查看lisi用户有policymaker角色。
[root@localhost rabbitmq]# rabbitmqctl list_users -q
user tags
qingjun [administrator]
lisi [policymaker]
guest [administrator]
5. 给lisi用户设置无角色。
[root@localhost rabbitmq]# rabbitmqctl set_user_tags lisi -q
6.查看lisi用户没有任何角色。
[root@localhost rabbitmq]# rabbitmqctl list_users -q
user tags
qingjun [administrator]
lisi []
guest [administrator]
7. 给lisi用户设置两个角色policymaker,management。
[root@localhost rabbitmq]# rabbitmqctl set_user_tags lisi policymaker,management
Setting tags for user "lisi" to [policymaker,management] ...
8.查看lisi用户有policymaker,management两个角色。
[root@localhost rabbitmq]# rabbitmqctl list_users -q
user tags
qingjun [administrator]
lisi [policymaker,management]
guest [administrator]
2.2.5 更改用户密码
命令格式:rabbitmqctl change_password {username) newpassword}
- username:表示要变更密码的用户名称。
- newpassword:表示要变更的新的密码。
#更改用户qingjun的密码为citms@123
[root@localhost rabbitmq]# rabbitmqctl change_password qingjun citms@123
Changing password for user "qingjun" ...
2.2.6 清除用户密码
命令格式:rabbitmqctl clear_password {username}
- username 表示要清除密码的用户名称。
#清除zhangsan用户的密码。
[root@localhost rabbitmq]# rabbitmqctl clear_password zhangsan
Clearing password for user "zhangsan" ...
2.2.7 密码验证用户
命令格式:rabbitmqctl authenticate user {username] [password}
- username:表示需要被验证的用户名称。
- password:表示密码。
# 验证qingjun用户的密码为123456,验证失败。
[root@localhost rabbitmq]# rabbitmqctl authenticate_user qingjun 123456
Authenticating user "qingjun" ...
Error:
Error: failed to authenticate user "qingjun"
user 'qingjun' - invalid credentials
# 验证qingjun用户的密码为citms@123,验证成功。
[root@localhost rabbitmq]# rabbitmqctl authenticate_user qingjun citms@123
Authenticating user "qingjun" ...
Success
2.3 插件使用类
在前面安装步骤我们还用到一个启用插件命令,启用了web端的管理页面就可以不用敲命令这么麻烦,直接可以在web页面上来管理虚拟主机、用户、队列、交换器、绑定关系、策略、各种参数等等。
- RabbitMQ management 插件也是是由Erlang 语言编写的,并且和 RabbitMQ 服务运行在同一个Erlang 虚拟机中。
- RabbitMQ management 插件可以提供 Web 管理界面用来管理如前面所述的虚拟主机、用户等,也可以用来管理队列、交换器、绑定关系、策略、参数等,还可以用来监控 RabbitMO服务的状态及一些数据统计类信息,可谓是功能强大,基本上能够涵盖所有 RabbitMQ管理的功能。
- RabbitMO 提供了很多的插件,默认存放在SRABBITMQ HOME/plugins 目录下。从下图可以看出非常多,其中就可以看到我们已经提到过的tracing插件。
- 插件的命令为rabbitmq-plugins,其命令格式为:rabbitmq-plugins [-n node] {command} [command options…]。
2.3.1 启动插件
命令格式:rabbitmg-plugins enable [plugin-name]
[root@localhost ~]# rabbitmq-plugins enable rabbitmq_management
2.3.2 关闭插件
命令格式:rabbitmg-plugins disable [plugin-name]。
[root@localhost ~]# rabbitmq-plugins disable rabbitmq_management
2.3.3 查看插件使用情况
命令格式:rabbitmq-plugins list
- 标记为[E*]的为显式启动,标记[e*]为隐式启动,
- 如显式启动 rabbitmg management 插件会同时隐式启动 rabbitmq_management_agent、rabbitmq_web_dispatch 2个插件。
[root@localhost ~]# rabbitmq-plugins list
- 开启插件后,我们就可以在页面上进行操作,这个插件功能非常强大,后面再具体讲各种细节,这里先创建个用户玩玩。
- 创建完用户在命令行也可以查找出来。
2.4 应用管理类
2.4.1 启动rabbitmq服务
2.4.1.1 前台启动
命令格式:rabbitmq-server start
- 此种方式启动只能前台运行,并产生rabbitmq-server进程,crl+C则退出关闭服务。
[root@localhost ~]# rabbitmq-server start
2.4.1.2 后台启动
命令格式:rabbitmg-server -detached
- 这个命令会顺带启动 Erlang 虚拟机和 RabbitMQ 应用服务。
- RabbitMQ 应用服务启动的前提是 Erlang 虚拟机是运转正常的。
[root@localhost ~]# rabbitmq-server -detached
2.4.2 关闭rabbitmq服务
- 关闭rabbitmq服务会将 Erlang 虚拟机一同关闭,而 rabbitmgctl stop_app 只关闭 RabbitMQ 应用服务。
- 停止erlang虚拟机和服务应用的命令有两个。
- rabbitmqctl stop [pid_file]
- rabbitmactl shutdown
- 两个命令用法不同,但效果是一样的。
2.4.2.1 指定pid文件阻塞进程关闭(stop)
命令格式:rabbitmqctl stop [pid_file]
- 如果指定了 pid_file,会发生阻塞,需要等待指定进程的结束。其中 pid file 是通过调用 rabbitmg-server 命令启动RabbitMO 服务时创建的,默认情况下存放于 Mnesia 目录中,可以通过 RABBITMO PID EILE这个环境变量来改变存放路径。
- 如果使用 rabbitmg-server -detach 命令来启动 RabbitMQ服务,则不会生成 pid file 文件。
[root@localhost ~]# rabbitmqctl stop
Stopping and halting node rabbit@localhost ...
2.4.2.2 直接阻塞进程关闭(shutdown)
命令格式:rabbitmactl shutdown
- 也是用于停止运行 RabbitMQ 的 Erlang 虚拟机和 RabbitMQ 服务应用。
- 与rabbitmgctl stop 不同的是,它不需要指定 pid_file 就可以阻塞等待指定进程的关闭,直到 Erlang 虚拟机进程退出。
- 如果 RabbitMQ没有成功关闭,则会返回一个非零值。
[root@localhost ~]# rabbitmqctl shutdown
Shutting down RabbitMQ node rabbit@localhost running at PID 103017
Waiting for PID 103017 to terminate
RabbitMQ node rabbit@localhost running at PID 103017 successfully shut down
2.4.3 只停止应用服务
命令格式:rabbitmactl stop_app
- 停止 RabbitMQ 服务应用,但是 Erlang 虚拟机还是处于运行状态。
- 该命令的执行优先于其他管理操作,也就是需要先停止服务应用才能再去执行其他的管理操作。比如:rabbitmactl reset。
[root@localhost ~]# rabbitmqctl stop_app
Stopping rabbit application on node rabbit@localhost ...
2.4.3 启动应用服务
命令格式:rabbitmqctl start_app
- 常常用于执行了其他管理操作之后,重新启动之前停止的 RabbitMQ应用。比如 rabbitmqctl reset。
[root@localhost ~]# rabbitmqctl start_app
Starting node rabbit@localhost ...
2.4.4 等待应用服务启动
命令格式:rabbitmqctl wait [pid_file]等待 RabbitMQ 应用的启动。
- 它会等到 pid file 的创建,然后等待 pid_file 中所代表的进程启动。
- 当指定的进程没有启动 RabbitMQ应用而关闭时将会返回失败。
1. 先启动rabbitmq服务,会生成pid文件,不要后台启动。此时已经相当于执行力rabbitmqctl start_app,应用服务已是启动状态。
[root@localhost profile.d]# rabbitmq-server start
2. 指定pid文件地址,执行成功。
[root@localhost mnesia]# rabbitmqctl wait /opt/backup/rabbitmq/rabbitmq/var/lib/rabbitmq/mnesia/rabbit@localhost.pid
Waiting for pid file '/opt/backup/rabbitmq/rabbitmq/var/lib/rabbitmq/mnesia/rabbit@localhost.pid' to appear
pid is 112409
Waiting for erlang distribution on node 'rabbit@localhost' while OS process '112409' is running
Waiting for applications 'rabbit_and_plugins' to start on node 'rabbit@localhost'
Applications 'rabbit_and_plugins' are running on node 'rabbit@localhost'
2.4.5 先停止应用再重置rabbitmq服务状态
命令格式:rabbitmqctl reset
- 将 RabbitMO 节点重置还原到最初状态。包括从原来所在的集群中删除此节点,从管理数据库中删除所有的配置数据,如已配置的用户、vhost 等,以及删除所有的持久化消息。
- 执行rabbitmactl reset 命今前必须停止 RabbitMQ应用,比如先执行 rabbitmqctl stop_app)。
[root@localhost ~]# rabbitmqctl stop_app
Stopping rabbit application on node rabbit@localhost ...
[root@localhost ~]# rabbitmqctl reset
Resetting node rabbit@localhost ...
2.4.6 强制重置rabbitmq服务状态
命令格式:rabbitmactl force_reset
- 强制将 RabbitMQ 节点重置还原到最初状态。不同于 rabbitmqctl reset 命令,rabbitmgct force_reset 命令不论当前管理数据库的状态和集群配置是什么,都会无条件地重置节点。
- 所以它只能在数据库或集群配置已损坏的情况下使用。
- 执行 rabbitmqctl force reset 命令前必须先停止 RabbitMO 应用。
[root@localhost ~]# rabbitmqctl stop_app
Stopping rabbit application on node rabbit@localhost ...
[root@localhost ~]# rabbitmqctl force_reset
Forcefully resetting node rabbit@localhost ...
2.4.7 轮换日志文件(已弃用)
命令格式:rabbitmgctl rotate_logs {suffix}
- 作用:指示 RabbitMQ 节点轮换日志文件。RabbitMQ 节点会将原来的日志文件中的内容追加到“原始名称+后缀”的日志文件中,然后再将新的日志内容记录到新创建的日志中(与原日志文件同名)。当目标文件不存在时,会重新创建。 如果不指定后缀 suffix参数,则日志文件只是重新打开而不会进行轮换。
- 现已弃用。
2.4.8 生成HiPE编译代码.beam文件(已弃用)
命令格式:rabbitmqctl hipe_compile {directory}
- 作用:将部分 RabbitMQ代码用 HiPE (HiPE 是指 High Performance Erlang,是 Erlang 版的JIT)编译,并且将编译后的.beam 文件 (beam 文件是 Erlang 编译器生成的文件格式,可以直接加载到 Erlang 虚拟机中运行的文件格式)保存到指定的文件目录中。如果这个目录不存在则会自行创建。如果这个目录中原本有任何.beam 文件,则会在执行编译前被删除。如果要使用预编译的这些文件,则需要设置RABBITMO SERVER CODE PATH这个环境变量来指定 hipe compile调用的路径。
- 现已弃用。
还有集群类命令,服务端类命令,还有rabbitmqadmin工具的使用,等集群安装后再讲解这些!