rabbitmq基础2——rabbitmq二进制安装和docker安装、基础命令

文章目录

  • 一、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版本对应。

rabbitmq基础2——rabbitmq二进制安装和docker安装、基础命令_第1张图片

  • 安装包准备。
[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

rabbitmq基础2——rabbitmq二进制安装和docker安装、基础命令_第2张图片
rabbitmq基础2——rabbitmq二进制安装和docker安装、基础命令_第3张图片

  1. 安装依赖环境。
[root@localhost rabbitmq]# yum install make gcc gcc-c++ build-essential openssl openssl-devel unixODBC unixODBC-devel kernel-devel m4 ncurses-devel
  1. 解压安装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/backup/rabbitmq/erlang
  1. 这个缺少wxWidgets报错问题可以忽略,不影响后面的编译安装,但可以尝试下。

rabbitmq基础2——rabbitmq二进制安装和docker安装、基础命令_第4张图片

  • wxWidgets官网
[root@localhost otp_src_25.0]# yum -y install bzip2
[root@localhost otp_src_25.0]# tar -jxvf  wxWidgets-3.0.5.tar.bz2 
[root@localhost otp_src_25.0]# cd wxWidgets-3.0.5
[root@localhost otp_src_25.0]# ./configure && make && sudo make install
  1. 编译安装
[root@localhost otp_src_25.0]# make && make install

rabbitmq基础2——rabbitmq二进制安装和docker安装、基础命令_第5张图片

  1. 配置环境变量
[root@localhost etc]# tail -2 /etc/profile
export ERLANG_HOME=/opt/backup/rabbitmq/erlang
export PATH=$ERLANG_HOME/bin:$PATH
[root@localhost etc]# source /etc/profile
  1. 检查环境,输入erl命令进入erlang环境。

在这里插入图片描述

  1. 安装rabbitmq另外一个依赖。
[root@localhost ~]# yum install -y socat
  1. 安装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/
  1. 配置rabbitmq服务的环境变量。
[root@localhost rabbitmq]# tail -2 /etc/profile
export ERLANG_HOME=/opt/backup/rabbitmq/rabbitmq
export PATH=$ERLANG_HOME/sbin:$PATH
[root@localhost etc]# source /etc/profile
  1. 启动服务。
  • 前台运行方式启动
[root@localhost rabbitmq]# rabbitmq-server start

rabbitmq基础2——rabbitmq二进制安装和docker安装、基础命令_第6张图片
在这里插入图片描述

  • 后台运行
[root@localhost rabbitmq]# rabbitmq-server -detached
  1. 开启Web管理界面插件。
rabbitmq-plugins enable rabbitmq_management 
  1. 默认用户guest登陆失败,3.0版本之后默认用户只能本机登录,所以我们需要创建新用户。

在这里插入图片描述

rabbitmq基础2——rabbitmq二进制安装和docker安装、基础命令_第7张图片
14. 创建用户

[root@localhost rabbitmq]# rabbitmqctl add_user qingjun citms

rabbitmq基础2——rabbitmq二进制安装和docker安装、基础命令_第8张图片
15. 指定角色

[root@localhost rabbitmq]# rabbitmqctl set_user_tags qingjun administrator

用户角色5种类型:

  1. none:无任何角色。新创建的用户的角色默认为none。
  2. management:可以访问Web管理页面。
  3. policymaker:包含management的所有权限,并且可以管理策略(policy)和参数(parameter)。
  4. monitoring:包含management的所有权限,并且可以看到所有连接(connections)、信道(channels)以及节点相关的信息。
  5. administartor:包含monitoring的所有权限,并且可以管理用户、虚拟主机、权限、策略、参数等等。
  • administator代表了最高的权限。

rabbitmq基础2——rabbitmq二进制安装和docker安装、基础命令_第9张图片
16. 用户授权。

命令格式: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 "/" ...
  1. 新账户qingjun登陆页面成功。

rabbitmq基础2——rabbitmq二进制安装和docker安装、基础命令_第10张图片

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”类型的命令,默认是无穷大。
  • 测试效果

rabbitmq基础2——rabbitmq二进制安装和docker安装、基础命令_第11张图片

1.3 docker安装

rabbitmq基础2——rabbitmq二进制安装和docker安装、基础命令_第12张图片
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

rabbitmq基础2——rabbitmq二进制安装和docker安装、基础命令_第13张图片

3、登录页面
rabbitmq基础2——rabbitmq二进制安装和docker安装、基础命令_第14张图片

二、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

rabbitmq基础2——rabbitmq二进制安装和docker安装、基础命令_第15张图片

2.1.3 删除虚拟主机

命令格式: rabbitmqctl delete_vhost {vhost},其中大括号里面的参数表示 vhost 的名称。

  • 删除一个 vhost 同时也会删除其下所有的队列、交换器、绑定关系、用户权限、参数和策略等信息。
[root@localhost rabbitmq]# rabbitmqctl delete_vhost wuhan
Deleting vhost "wuhan" ...

rabbitmq基础2——rabbitmq二进制安装和docker安装、基础命令_第16张图片

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" ...

rabbitmq基础2——rabbitmq二进制安装和docker安装、基础命令_第17张图片

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 代表了最高的权限。

rabbitmq基础2——rabbitmq二进制安装和docker安装、基础命令_第18张图片

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]

rabbitmq基础2——rabbitmq二进制安装和docker安装、基础命令_第19张图片

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]

rabbitmq基础2——rabbitmq二进制安装和docker安装、基础命令_第20张图片

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

rabbitmq基础2——rabbitmq二进制安装和docker安装、基础命令_第21张图片

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…]。

rabbitmq基础2——rabbitmq二进制安装和docker安装、基础命令_第22张图片

2.3.1 启动插件

命令格式:rabbitmg-plugins enable [plugin-name]

[root@localhost ~]# rabbitmq-plugins enable rabbitmq_management

rabbitmq基础2——rabbitmq二进制安装和docker安装、基础命令_第23张图片

2.3.2 关闭插件

命令格式:rabbitmg-plugins disable [plugin-name]。

[root@localhost ~]# rabbitmq-plugins disable rabbitmq_management

rabbitmq基础2——rabbitmq二进制安装和docker安装、基础命令_第24张图片

2.3.3 查看插件使用情况

命令格式:rabbitmq-plugins list

  • 标记为[E*]的为显式启动,标记[e*]为隐式启动,
  • 如显式启动 rabbitmg management 插件会同时隐式启动 rabbitmq_management_agent、rabbitmq_web_dispatch 2个插件。
[root@localhost ~]# rabbitmq-plugins list

rabbitmq基础2——rabbitmq二进制安装和docker安装、基础命令_第25张图片

  • 开启插件后,我们就可以在页面上进行操作,这个插件功能非常强大,后面再具体讲各种细节,这里先创建个用户玩玩。
  • 创建完用户在命令行也可以查找出来。

rabbitmq基础2——rabbitmq二进制安装和docker安装、基础命令_第26张图片
rabbitmq基础2——rabbitmq二进制安装和docker安装、基础命令_第27张图片

2.4 应用管理类

2.4.1 启动rabbitmq服务

2.4.1.1 前台启动

命令格式:rabbitmq-server start

  • 此种方式启动只能前台运行,并产生rabbitmq-server进程,crl+C则退出关闭服务。
[root@localhost ~]# rabbitmq-server start

rabbitmq基础2——rabbitmq二进制安装和docker安装、基础命令_第28张图片

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/[email protected]
Waiting for pid file '/opt/backup/rabbitmq/rabbitmq/var/lib/rabbitmq/mnesia/[email protected]' 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 ...

rabbitmq基础2——rabbitmq二进制安装和docker安装、基础命令_第29张图片

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 ...

rabbitmq基础2——rabbitmq二进制安装和docker安装、基础命令_第30张图片

2.4.7 轮换日志文件(已弃用)

命令格式:rabbitmgctl rotate_logs {suffix}

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

rabbitmq基础2——rabbitmq二进制安装和docker安装、基础命令_第31张图片

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工具的使用,等集群安装后再讲解这些!

你可能感兴趣的:(rabbitmq,java-rabbitmq,rabbitmq,docker,linux,运维)