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

news2024/11/19 16:43:34

文章目录

  • 一、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

在这里插入图片描述
在这里插入图片描述

  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/erlang
  1. 解决报错问题,缺少安装包。

在这里插入图片描述

[root@localhost otp_src_25.0]# yum install -y  ncurses-devel
  1. 编译安装
[root@localhost otp_src_25.0]# make && make install
  1. 配置环境变量
[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
  1. 检查环境,输入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> 

  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 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 
  1. 启动服务。
  • 前台运行方式启动
[root@localhost rabbitmq]# rabbitmq-server start

在这里插入图片描述
在这里插入图片描述

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

在这里插入图片描述

在这里插入图片描述
12. 创建用户

[root@localhost rabbitmq]# rabbitmqctl add_user qingjun citms

在这里插入图片描述
13. 指定角色

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

在这里插入图片描述
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 "/" ...
  1. 新账户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工具的使用,等集群安装后再讲解这些!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/80830.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

爱心源码动图-Html网页运行

程序示例精选 爱心源码动图-Html网页运行 如需安装运行环境或远程调试,见文章底部微信名片! 前言 Html写的追女生神器-爱心动图,代码整洁,规则,易读,对学习与使用Html有较好的帮助。 文章目录 一、所需工具…

Redis高可用之主从复制、哨兵、cluster集群

Redis高可用之主从复制、哨兵、cluster集群Redis 高可用什么是高可用Redis的高可用技术Redis主从复制主从复制的作用主从复制流程搭建Redis主从复制所有节点安装Redis修改master节点的配置文件修改slave节点的配置文件验证主从效果Redis哨兵模式哨兵模式的作用哨兵结构故障转移…

Redis集群模式

目录 前言 一、集群的作用 二、集群模式的数据分片 三、集群模式的主从复制模型 四、Redis集群模式 Redis集群部署 开启群集功能 修改所有集群服务的配置文件端口,使其不一致 启动集群 集群测试 前言 1、集群,即 Redis Cluster, …

模型效果差?我建议你掌握这些机器学习模型的超参数优化方法

模型优化是机器学习算法实现中最困难的挑战之一。机器学习和深度学习理论的所有分支都致力于模型的优化。 机器学习中的超参数优化旨在寻找使得机器学习算法在验证数据集上表现性能最佳的超参数。超参数与一般模型参数不同,超参数是在训练前提前设置的。举例来说&a…

CKA考试Tips

前言 今年黑五的双证套餐的折扣比双11时还便宜个200多,不到2000,应该是史低吧,反正比前年低。即使考试前看了各种避坑技巧,虽然通过了但是结果还是因为各种问题导致时间不够没做完扣分,于是下面总结一下参加CKA/CKS考试时候的技巧。 报名及考…

[基因遗传算法]进阶之四:实践VRPTW

参考资料: 《旅行商问题(TSP)、车辆路径问题(VRP,MDVRP,VRPTW)模型介绍》 本文对《基于GA算法解决VRPTW》的分析和思考.具体的代码可以参考 《Python实现(MD)VRPTW常见求解算法——遗传算法(GA)》 . 文章目录壹、VRPTW一. 定义类二、数据读取三. 构造初…

JVM调优手段

JDK提供命令工具 jstat 是用于监视虚拟机各种运行状态信息的命令行工具。它可以显示本地或者远程虚拟机进程中的类装载、内存、垃圾收集、JIT 编译等运行数据,在没有 GUI图形界面,只提供了纯文本控制台环境的服务器上,它将是运行期定位虚拟…

博球一看,CSDN与你共观世界杯

2022卡塔尔世界杯不知不觉已接近尾声,不仅让人感叹,乌拉圭,巴西,葡萄牙都已淘汰,四强诞生分别是阿根廷,法国,摩洛哥,克罗地亚,非常期待梅西和魔笛的对决,也希…

电子学会2020年12月青少年软件编程(图形化)等级考试试卷(三级)答案解析

目录 一、单选题(共25题,每题2分,共50分) 二、判断题(共10题,每题2分,共20分) 三、编程题【该题由测评师线下评分】(共3题,共30分) 青少年软件…

【云计算与大数据技术】虚拟化简介及虚拟化的分类讲解(图文解释 超详细)

一、虚拟化简介 1:什么是虚拟化 虚拟化是指计算机元件在虚拟的基础上而不是在真实的、独立的物理硬件基础上运行。这种以优化资源、简化软件的重新配置过程为目的的解决方案就是虚拟化技术 虚拟化架构就是在一个物理硬件机器上同时运行多个不同应用的独立的虚拟系…

r语言中对LASSO回归,Ridge岭回归和弹性网络Elastic Net模型实现|视频

Glmnet是一个通过惩罚最大似然关系拟合广义线性模型的软件包。正则化路径是针对正则化参数λ的值网格处的lasso或Elastic Net(弹性网络)惩罚值计算的。 最近我们被客户要求撰写关于LASSO的研究报告,包括一些图形和统计输出。该算法非常快&am…

电子学会2020年12月青少年软件编程(图形化)等级考试试卷(四级)答案解析

目录 一、单选题(共15题,每题2分,共30分) 二、判断题(共10题,每题2分,共20分) 三、编程题【该题由测评师线下评分】(共4题,共50分) 青少年软件…

51单片机——LED 点阵点亮一个点,小白详解

LED点阵介绍: LED点阵是由发光二极管排列组成的显示器件,在我们生活中的电器中随处可见,被广泛用于汽车报站器,广告屏等。 通常用用较多的是8*8点阵,然后使用多个8*8点阵组成不同分辨率的LED点阵显示屏,比如…

kubernetes--kube-proxy组件深入理解

文章目录kube-proxy的工作原理netfilter的运行机制ipvs和iptables有什么区别?iptables在网络栈的hook点更多,而ipvs的hook点很少iptables的hook点ipvs的hook点如何切换?ipvs安装为何推荐ipvs?为什么iptables或者ipvs在每个节点上都…

面试官:你会几种分布式 ID 生成方案???

1. 为什么需要分布式 ID 对于单体系统来说,主键 ID 常用主键自动的方式进行设置。这种 ID 生成方法在单体项目是可行的,但是对于分布式系统,分库分表之后就不适应了。比如订单表数据量太大了,分成了多个库,如果还采用…

基于java+springboot+mybatis+vue+mysql的福聚苑社区团购

项目介绍 随着互联网的发展,各种团购模式也越来越多,尤其是最近几年的社区团购模式更是如火如荼的在进行着,我了能够让大家品味到更多的瓜果蔬菜,我们通过java语言,springboot框架、前端vue技术、数据库mysql开发了本…

使用Hilt搭建隔离层架构

在我们的日常编码的过程中,常常会遇到这种需求。例如:这个版本我们使用okhttp作为网络通信库,如果下个版本我们想要用volley作为网络通信库,那该怎么办呢?我们总不能对使用okhttp的地方一个个改成volley吧!…

上班都在刷的Java八股文,老板都想要一份?

今天心血来潮刷刷牛客看到这,小伙在上班刷八股文被老板逮到!真行啊,结果还让他给老板也发一份,感觉过不了多久就跟老板一起提桶跑路了 说到这,我最近也整理了GitHub上高标星的面试八股文,这种金九银十的节骨…

Java并发编程之Condition await/signal原理剖析

Java并发编程之Condition await/signal原理剖析 文章目录Java并发编程之Condition await/signal原理剖析Condition与Lock的关系Condition实现原理await()实现分析signal()实现分析Condition接口与Object监听器的区别Condition与Lock的关系 Condition本身也是⼀个接口&#xff…

OpenStack的简单部署

OpenStack的简单部署 文章目录OpenStack的简单部署一、OpenStack概述二、环境准备三、搭建流程1. 更新 & 升级2. 安装好用的vim VimForCpp3. 安装必要依赖4. 关闭防火墙、核心防护、NetworkManager5. 配置静态IP地址6.配置yum源7. 安装时间同步服务8. 使用packstack 一键部…