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

2023-11-20

文章目录

一、RabbitMQ安装

1.1 二进制安装

需要提前下载两个安装包,两个包的版本必须对应。

  • 安装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. 安装依赖环境。
[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报错问题可以忽略,不影响后面的编译安装,但可以尝试下。

在这里插入图片描述

[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

在这里插入图片描述

  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

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

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

在这里插入图片描述

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

[root@localhost rabbitmq]# rabbitmqctl add_user qingjun citms

在这里插入图片描述
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代表了最高的权限。

在这里插入图片描述
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登陆页面成功。

在这里插入图片描述

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

rabbitmq基础2——rabbitmq二进制安装和docker安装、基础命令 的相关文章

  • 无法连接到 macOS 上的 Docker 守护进程

    我通常更喜欢使用brew 来管理我的OSX 上的应用程序 我能够安装 docker docker compose 和 docker machine docker version Docker version 17 05 0 ce build
  • Android 时钟滴答数 [赫兹]

    关于 proc pid stat 中应用程序的总 CPU 使用率 https stackoverflow com questions 16726779 total cpu usage of an application from proc
  • 如何在数组中存储包含双引号的命令参数?

    我有一个 Bash 脚本 它生成 存储和修改数组中的值 这些值稍后用作命令的参数 对于 MCVE 我想到了任意命令bash c echo 0 0 echo 1 1 这解释了我的问题 我将用两个参数调用我的命令 option1 without
  • 如何有效截断文件头?

    大家都知道truncate file size 函数 通过截断文件尾部将文件大小更改为给定大小 但是如何做同样的事情 只截断文件的尾部和头部呢 通常 您必须重写整个文件 最简单的方法是跳过前几个字节 将其他所有内容复制到临时文件中 并在完成
  • 适用于elasticsearch 7.0.1 和 kibana 7.0.1 的 docker-compose.yml

    我在 Windows 10 上将 Docker Desktop 与 Linux 容器结合使用 并希望通过 docker compose 文件启动最新版本的 elasticsearch 和 kibana 容器 使用 6 2 4 等旧版本时一切
  • Nginx docker容器代理传递到另一个端口

    我想在 docker 容器中运行 Nginx 它监听端口 80 并且当 url 以 word 开头时 我希望它 proxy pass 到端口 8080api 我有一些网络应用程序侦听端口 8080 这在没有 docker 的情况下对我来说一
  • 在 Ubuntu 18.04 上安装 Docker? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我检查了 Ubuntu 上 Docker 的文档页面 没有看到最近发布的 18 04 https docs docker com inst
  • Redis+Docker+Django - 错误 111 连接被拒绝

    我正在尝试使用 Redis 作为使用 Docker Compose 的 Django 项目的 Celery 代理 我无法弄清楚我到底做错了什么 但尽管控制台日志消息告诉我 Redis 正在运行并接受连接 事实上 当我这样做时 docker
  • 安装J语言的JQt IDE,出现错误

    我一直按照这里的说明进行操作 http code jsoftware com wiki System Installation Linux http code jsoftware com wiki System Installation L
  • 错误:无法满足的约束 - 在 php:7-fpm-alpine 上

    我正在考虑在 fpm alpine 容器上设置 laravel 遇到一个问题 下面的 Dockerfile 会产生一些错误 FROM php 7 fpm alpine install extensions needed for Larave
  • 使用 sh 运行 bash 脚本

    我有 bash 脚本 它需要 bash 另一个人尝试运行它 sh script name sh 它失败了 因为 sh 是他的发行版中 dash 的符号链接 ls la bin sh lrwxrwxrwx 1 root root 4 Aug
  • iptables通过注释删除特定规则

    我需要删除一些具有相同评论的规则 例如 我有带有 comment test it 的规则 所以我可以像这样获得它们的列表 sudo iptables t nat L grep test it 但是我怎样才能删除所有带有注释 测试它 的 PR
  • jpegtran 优化而不更改文件名

    我需要优化一些图像 但不更改它们的名称 jpegtran copy none optimize image jpg gt image jpg 但是 这似乎创建了 0 的文件大小 当我对不同的文件名执行此操作时 大小仍然完全相同 怎么样 jp
  • Linux 中什么处理 ping?

    我想覆盖 更改 linux 处理 ping icmp echo 请求数据包的方式 这意味着我想运行自己的服务器来回复传入的 icmp 回显请求或其他 数据包 但为了使其正常工作 我想我需要禁用 Linux 的默认 ping icmp 数据包
  • Composer 文件中的 Docker 健康检查

    我尝试将新的健康检查集成到我的 docker 系统中 但我真的不知道如何以正确的方式进行 问题是 我的数据库容器需要比启动主应用程序的容器更多的时间来启动和初始化数据库 结果 主容器无法正确启动 导致数据库连接丢失 我编写了一个 healt
  • Poetry install --no-dev 需要安装 Rust 吗?

    我正在 Raspberry pi 3b Lite buster 2020 年 2 月 的容器中安装 Poetry 我使用图像arm32v7 python 3 7 slim buster 这里是Dockerfile FROM arm32v7
  • 如何为 Azure Service Fabric 中的 docker 容器指定命令行参数

    我有一个泊坞窗图像wiremock net nano https hub docker com r sheyenrath wiremock net nano 它接受额外的命令行参数 例如 Port and AdminUsername 正常的
  • ftrace:仅打印trace_printk()的输出

    是否可以只转储trace printk 输出于trace文件 我的意思是过滤掉函数跟踪器 或任何其他跟踪器 中的所有函数 一般来说 您可以在选项目录中关闭选项 sys kernel debug tracing options Use ls显
  • 什么会阻止 Docker 容器中运行的代码连接到单独服务器上的数据库?

    我有一个在 Ubuntu 14 04 上的 Docker 容器中运行的 NET Core 1 1 应用程序 它无法连接到在单独服务器上运行的 SQL Server 数据库 错误是 未处理的异常 System Data SqlClient S
  • 如何更改 Apache 服务器的根目录? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 如何更改 Apache 服务器的文档根目录 我基本上想要localhost从 来 users spencer projects目录而不是

随机推荐

  • db2实现两个数相减_DB2 日期相减

    标签 简单方法 使用 days 字符型的日期 2012 01 01 2012 01 11 values days date 2012 01 11 days date 2012 01 01 10 错误示例 sql Append LEFT JO
  • ARM developer suit v1.2免安装教程

    博主按照网上的步骤安装了不下10遍ads 很生气 一次都没成功过 然后卸载后 继续安装 总是出现modify repait unistall那个界面 以为没有卸干净 然后按照网上的删注册表记录的方法 电脑第二天就开不了机了 当然还是没装成功
  • 路由器简单认识

    路由器 是一个三层设备 可以解析到三层 第一层是比特流 电压 电信号 第二层是数据帧 从比特流到数据帧的过程也叫格式化 可以看到MAC地址 第三层是数据包 IP地址 网络层 交换机 网桥 二层设备 区别 1 交换机基于硬件处理 网桥基于软件
  • 简单介绍十几款常用的画架构图流程图的软件

    简单介绍十几款常用的画架构图流程图的软件 draw io draw io是开源免费的在线画图工具 还提供桌面版本 特性 实时协作 支持在线离线版本 存储支持多种方式 Google Drive OneDrive GitHub GitLab D
  • 非常优秀的网站设计案例,设计师必备

    厚积才能薄发 一个优秀的设计师的天性一定是想要获得更多网站设计灵感 擅于为新项目寻找创意切入点 搜索设计参考资源 最新的设计趋势 今天为大家带来了一组免费可商用的网站设计案例 通过这些网站设计案例 你可以获得 寻找不同风格的网站灵感 配色
  • 硬件工程师-三极管

    目录 一 机械开关 二 三极管的种类 三 NPN型三极管 N型三极管 四 PNP型三极管 编辑 五 三极管公式 NPN型三极管 PNP型三极管 六 NPN管的继续讲解 三极管的导通电压 PNP管也是一样 三极管的三种状态 判断三极管是放大还
  • 抖音SEO矩阵系统源码开发部署(二)技术搭建+二次开发

    抖音SEO矩阵系统源码开发 是一项技术密集型工作 需要对大数据处理 人工智能等领域有深入了解 该系统开发过程中需要用到多种编程语言 如Java Python等 同时 需要使用一些框架和技术 如Hadoop Spark PyTorch等 以提
  • 文件搜索工具(Python实现)

    文章目录 文件搜索工具介绍 代码实现 实现思路 os walk函数 os path join函数 代码整体编写 打包成exe程序 效果展示 文件搜索工具介绍 文件搜索工具能够基于名称快速定位匹配的文件和文件夹位置 比如Everything就
  • 原来实现GCP用客户端登录这么简单啊

    充满活力的一天开始了 GCP 就是谷歌的一个云服务 进入VM实例列表通过 SSH 点击 在浏览器窗口打开 进入VPS服务器 下图 切换到管理员用户 sudo i 编辑sshd config文件 vi etc ssh sshd config
  • 一个jq投票,无论成功与否3秒后自动关闭提示框

    原文地址 http blog csdn net zjb574 article details 7759447
  • 超详细的Vue-router (路由)

    由于Vue在 开发时对路由支持的不足 于是官方补充了vue router插件 vue的单页面应用是基于路由和组件的 路由用于设定访问路径 并将路径和组件映射起 来 传统的页面应用 是用一些超链接来实现页面切换和跳转的 在vue router
  • 解决vCharts不兼容Echarts5+版本问题

    背景 在实际开发项目中 发现老项目里同时用到了vCharts和Echarts 此时的Echarts是低版本 并不会出现问题 但在漏洞扫描中Echarts需升级 此时项目开始报错 v charts 不能和echarts5 版本同时存在 当时的
  • 如何快速构建CMBD系统-glpi

    脚本后续更新及迭代将由kkitDeploy项目代替 https github com luckman666 kkitdeploy server 请大家持续关注kkitDeploy 一 CMBD系统构建步骤 起初 开发这套CMBD系统是为了帮
  • 华为OD机试真题-最大平分数组【2023Q1】

    题目描述 给定一个数组nums 可以将元素分为若干个组 使得每组和相等 求出满足条件的所有分组中 最大的平分组个数 输入描述 第一行输入 m 接着输入m个数 表示此数组 数据范围 1 lt M lt 50 1 lt nums i lt 50
  • Go语言里面的各种疑难杂症

    什么是闭包 闭包有什么缺陷 func AddUpper func int int var n int 10 return func x int int n n x return n func main f AddUpper fmt Prin
  • System Poles and Zeros 系统零点和极点

    LTI系统 连续的有s传递函数 离散的有z传递函数 s jw 所以连续传递函数的零极点都对应频率值 零点的物理意义是 某个频率的输入信号 正弦信号 不会产生任何输出 被block掉了 极点的物理意义是 某个频率的输入信号会产生无穷大的输出
  • C语言void指针(void*)

    Void指针 void 是一种通用指针类型 可以用来存储任何类型的指针 但不能直接解引用 在C语言中 void指针可以用来实现对类型不确定的数据的操作 或者用作函数的参数和返回类型 以便于处理不同类型的数据 以下是一些常见的void指针的用
  • 微信小程序消息订阅推送消息后端服务(.net core)

    废话不多说直接上代码 分为三部分 第一获取微信模板信息需要token 第二步发送微信模板信息 注意 该方法不需要进行任何修改 参数 access token 是第一步获取到的token 参数 body 是json字符串格式提示信息内容 第三
  • Cannot read property bindings of null 解决方法

    安装 babel preset env yarn add babel preset env 或 npm install babel preset env webpack config js presets env 替换成 presets b
  • 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