RabbitMQ--基础--5.1--部署--命令

RabbitMQ–基础–5.1–部署–命令


1、常用命令

1.1、查看状态

rabbitmqctl status

显示 Broker 的状态,比如当前 Erlang 节点上运行的应用程序、RabbitMQ/Erlang的版本信息、os 的名称、内存及文件描述符等统计信息。
在这里插入图片描述

1.2、查看绑定

rabbitmqctl list_bindings [-p vhost] [bindinginfoitem ...]

# rabbitmqctl list_bindings

1.3、查看当前所有信道的信息

rabbitmqctl list_channels [channelinfoitem ...]
# rabbitmqctl list_channels

1.4、返回 TCP|IP连接的统计信息。

rabbitmqctl list_connections

rabbìtmqctl list_connections [connectioninfoitem ...]

1.5、列举消费者信息

每行将显示由制表符分隔的己订阅队列的名称、相关信道的进程标识、consumerTag、是否需要消费端确认 prefetch_count 及参数列表这些信息。


 
rabbitmqctl list_consumers [-p vhost]
# rabbitmqctl list_consumers

1.6、查看交换机

rabbitmqctl list_exchanges [-p vhost] [exchangeinfoitem ...]

在这里插入图片描述

1.7、健康检查

rabbitmqctl node_health_check

对RabbitMQ 节点进行健康检查,确认应用是否正常运行、list_queues list_channels 是否能够正常返回等。

1.8、查看环境变量

rabbitmqctl environment

显示每个运行程序环境中每个变量的名称和值。

1.9、服务器状态报告

rabbitmqctl report

 
rabbitmqctl report > report.txt

为所有服务器状态生成一个服务器状态报告,井将输出重定向到一个文件

2、队列相关命令

2.1、查看已声明的队列

rabbitmqctl list_queues [-p vhost] [queueinfoitem ...] 
# rabbitmqctl list_queues

在这里插入图片描述

2.2、清空队列

# rabbitmqctl purge_queue  队列名称
rabbitmqctl purge_queue test

在这里插入图片描述

2.3、删除队列

# rabbitmqctl delete_queue 队列名称  
rabbitmqctl delete_queue test

在这里插入图片描述

3、用户管理

  1. 在RabbitMQ 中,用户是访问控制( Access Contro l)的基本单元
  2. 单个用户可以跨越多个vhost进行授权。针对一至多个vhost,用户可以被赋予不同级别的访问权限,并使用标准的用户名和密码来认证用户。

3.1、新建用户

rabbitmqctl add_user {username} {password}

# 新增用户admin2,密码 123456
rabbitmqctl add_user admin2 123456

3.2、修改用户密码

 
rabbitmqctl change_password {username} {newPassword}

# 修改admin2密码
rabbitmqctl change_password  admin2  1234567

3.3、删除用户

rabbitmqctl delete_user {username}
# 删除admin2用户
rabbitmqctl delete_user admin2

3.4、查看用户

rabbitmqctl list_users

在这里插入图片描述

3.5、设置用户角色

rabbitmqctl set_user_tags {username} {tag}


# 给admin用户分配 administrator角色
sudo rabbitmqctl set_user_tags admin administrator

3.5.1、tag的值

  1. management
  2. policymaker
  3. monitoring
  4. administrator
3.5.1.1、management(普通管理者)
  1. 可登陆管理控制台
  2. 无法看到节点信息
  3. 无法对策略进行管理。
3.5.1.2、policymaker(策略制定者)
  1. 包含management的所有权限
  2. 可以管理策略(Policy)和参数Parameter。
3.5.1.3、monitoring(监控者)
  1. 包含management的所有权限
  2. 可以查看rabbitmq节点的相关信息(进程数,内存使用情况,磁盘使用情况等)
3.5.1.4、administrator(超级管理员,admin)
  1. 最大权限的角色
  2. 可以管理用户、虚拟主机、权限、策略、参数等

3.6、清除用户密码

rabbitmqctl clear_password {username}

可以清除密码,这样用户就不能使用密码登录

3.7、验证用户

rabbitmqctl authentiçate_user {username} {passWord}

通过密码来验证用户

3.8、清除用户对某个虚拟机的权限。

rabbitmqctl clear_permissions [-p vhostName] {username}

3.9、显示虚拟主机上的权限。

rabbitmqctl list_permissions [-p vhost] 

3.10、显示用户在已分配虚拟机上的权限。

rabbitmqctl list_user_permissions {username}

4、节点管理

4.1、应用–启动

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

4.2、应用–停止

rabbitmqctl stop_app
  1. 停止RabbitMQ应用
  2. Erlang虚拟机处于运行状态
  3. 此命令的执行优先于其他管理操作,比如rabbitmqctl reset。

4.3、应用–停止

rabbitmqctl stop [pid_file] 
  1. 关闭RabbitMQ应用
  2. 关闭Erlang虚拟机
  3. 如果指定了pid_file,还需要等待指定进程的结束。
    1. pid_file是通过rabbitmq-server命令启动RabbitMQ服务时创建的,默认情况下存放于Mnesia目录中。可以通过RABBITMQ PID FILE这个环境变量来改变存放路径
    2. rabbitmq-server - detach 这个带有 -detach后缀的命令来启动 RabbitMQ服务则不会生成 pid_file 文件。

4.4、重置RabbitMQ节点

rabbitmqctl reset
  1. 重置RabbitMQ节点,将清空节点的状态, 并将其恢复到空白状态。
  2. 从原来所在的集群中删除此节点
    1. 该命令会和集群中的磁盘节点进行通信, 告诉它们该节点正在离开集群。不然集群会认为该节点出了故障, 并期望其最终能够恢复过来。
  3. 从管理数据库 中删除所有的配置数据
    1. 删除 配置的用户、 vhost 等数据
    2. 删除 所有的持久化消息。
  4. 执行 rabbi tmqctl reset 命令前必须停止RabbitMQ 应用。

4.5、强制重置RabbitMQ节点

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

4.6、指示RabbitMQ节点轮换日志文件。

rabbitmqctl rotate_logs {suffix}
  1. 指示RabbitMQ节点轮换日志文件。
  2. RabbitMQ节点会将原来的日志文件中的内容追加到"原始名称+后缀"的日志文件中,然后再将新的日志内容记录到新创建的日志中(与原日志文件同名)。当目标文件不存在时,会重新创建。如果不指定后缀suffix. 则日志文件只是重新打开而不会进行轮换。
  3. 举例
    1. 原日志文件为rabbit@nodel.log和rabbit@nodel-sasl.1og
    2. 轮换日志之后,原日志文件中的内容就被迫加到rabbit@nodel.log.1和rabbit@nodel-sasl.1og.1日志中,之后重新建立rabbit@nodel.log和rabbit@nodel-sasl.1og文件用来接收新的日志。

4.7、应用–停止

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

4.8、服务

 
# 启动
systemctl start rabbitmq-server
# 停止
systemctl stop rabbitmq-server

# 查看状态
systemctl status rabbitmq-server
# 重启
systemctl restart rabbitmq-server

4.9、等待RabbitMQ应用的启动

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

4.10、将部分RabbitMQ 代码用hipe 编译

rabbitmqctl hipe_compile {directory}

  1. 将部分RabbitMQ 代码用hipe 编译,并且将编译后的.beam文件保存到指定的文件目录中。
    1. 如果这个目录不存在则会自行创建。
    2. 如果这个目录中存在任何.beam 文件,则会在执行编译前被删除。
  2. 如果要使用预编译的这些文件,则需要设置RABBITMQ SERVER CODE PATH这个环境变量来指定hipe_ompile调用的路径。
  3. beam 文件
    1. 是Erlang 编译器生成的文件格式
    2. 是可以直接加载到Erlang虚拟机中运行的文件格式

5、集群相关命令

5.1、离开集群

rabbitmqctl reset
  1. 重置RabbitMQ节点,将RabbitMQ节点重置还原到最初状态。
  2. 从原来所在的集群中删除此节点
  3. 从管理数据库 中删除所有的配置数据
    1. 删除 配置的用户、 vhost 等数据
    2. 删除 所有的持久化消息。
  4. 执行 rabbi tmqctl reset 命令前必须停止RabbitMQ 应用。

5.2、显示集群的状态

rabbitmqctl cluster_status 

5.3、将节点加入指定集群中

  1. 在这个命令执行前需要停止 RabbitMQ应用井重置节点。
  2. ram表示节点是内存节点
rabbitmqctl joio_cluster {cluster_node} [--ram] 

5.4、修改集群节点的类型

在这个命令执行前需要停止 RabbitMQ应用。

rabbitmqctl change_cluster_node_type {disclram}

5.5、将节点从集群中删除,允许离线执行。

rabbitmqctl forget_cluster_node [--offiine] 

5.6、来查看那些slaves已经完成同步

rabbitmqctl list_queues {queue_name} {slave_pids} synchronised_slave_pids

5.7、手动的方式同步一个queue

rabbitmqctl sync_queue [-p vhost] {queue}
  1. 指示未同步队列queue的slave 镜像可以同步master 镜像行的内容。
  2. 同步期间此队列会被阻塞(所有此队列的生产消费者都会被阻塞),直到同步完成。
  3. 此条命令执行成功的前提是队列queue配置了镜像。
  4. 注意:未同步队列中的消息被耗尽后,最终也会变成同步,此命令主要用于未耗尽的队列。

5.8、取消某个queue的同步功能

rabbitmqctl cancel_sync_queue [-p vhost] {queue_name}

5.9、在集群中的节点应用启动前咨询cluster node节点的最新信息, 并更新相应的集群信息

rabbitmqctl update_cluster_nodes {clusternode}

5.10、无条件地启动节点

rabbitmqctl force_boot

确保节点可以启动,即使它不是最后一个关闭的节点。通常情况下,当关闭整个RabbitMQ集群时,重启的第一个节点应该是最后关闭的节点,因为它可以看到其他节点所看不到的事情。但是有时会有一些异常情况出现,比如整个集群都断电而所有节点都认为它不是最后一个关闭的。在这种情况下,可以调用rabbitmqctl force_boot 命令,这就告诉节点可以无条件地启动节点。

在此节点关闭后,集群的任何变化,它都会丢失。如果最后一个关闭的节点永久丢失了,那么需要优先使用 rabbitmqctl forget_cluster_node --offiine 命令,因为它可以确保镜像队列的正常运转。

5.11、设置集群名称

rabbitmqctl set_cluster_name {name}
  1. 设置集群名称。
  2. 集群名称在客户端连接时会通报给客户端。Federation和Shovel 插件也会有用到集群名称的地方
  3. 集群名称默认是集群中第一个节点的名称,通过这个命令可以重新设置。在Web 管理界面的右上角的地方,点击也可以修改集群名称。

6、镜像队列命令

6.1、设置镜像队列

rabbitmqctl sync_queue

6.2、取消镜像队列

rabbitmqctl cancel_sync_queue

7、插件管理

rabbitmq-plugins [-n node] {command} [command options ...]

7.1、启动插件

rabbitmq-plugins enable [--offline] [--online] {plugin ...}
 

# 启动插件:Web管理
rabbitmq-plugins enable rabbitmq_management

7.2、禁用插件

rabbitmq-plugins disable [--offline] [--online] {plugin ...}
# 禁用插件:Web管理
rabbitmq-plugins disable rabbitmq_management

7.3、启用指定的插件,并且禁用其他所有插件

rabbitmq-plugin set rabbitmq_management
  1. 启用 参数指定的插件,并且禁用其他所有插件
  2. 没有参数表示禁用所有的插件

7.4、显示所有的插件,每一行一个

rabbitmq-plugins list

7.5、显示所有的插件,并且显示插件的版本号和描述信息

rabbitmq-plugins list -v

7.6、显示所有名称含有 “management” 的插件

rabbitmq-plugins list -v management

7.7、显示所有显示或者隐式启动的插件

rabbitmq-plugins list -e rabbit

8、权限管理

8.1、授权

  1. 在RabbitMQ 中,权限控制则是以vhost为单位的。
  2. 当创建一个用户时,用户通常会被指派给至少一个vhost,并且只能访问被指派的vhost内的队列、交换器和绑定关系等。因此,RabbitMQ中的授予权限是指在vhost级别对用户而言的权限授予。

8.1.1、命令

 
rabbitmqctl set permissions [-p vhostName] {userName} {conf} {write} {read} 
 

vhostpath

授予用户访问权限的vhost名称,可以设置为默认值,即 vhost 为 “/”

user

  1. 可以访问指定vhost 的用户名
  2. 填写用户名

conf

  1. 一个正则表达式,用于匹配用户在哪些资源上拥有可配置权限
  2. 可配置权限:指的是队列和交换器的创建及删除之类的操作

write

  1. 一个正则表达式,用于匹配用户在哪些资源上拥有可写权限
  2. 可写:指的是发布消息

read

  1. 一个正则表达式,用于匹配用户在哪些资源上拥有可读权限。
  2. 可读:指与消息有关的操作,包括读取消息及清空整个队列等。

8.1.2、举例

rabbitmqctl set_permissions -p / root ".*" ".*" ".*"

用于设置root用户拥有对所有资源的 读写配置权限

8.2、查看用户权限

rabbitmqctl list_permissions [vhostpath]

8.2.1、案例:查看根路径下的所有用户权限

rabbitmqctl list_permissions

在这里插入图片描述

8.2.2、案例:查看指定命名空间下的所有用户权限

rabbitmqctl list_permissions /abc

8.3、查看指定用户下的权限

rabbitmqctl list_user_permissions {username}

例如查看root用户下的权限 rabbitmqctl list_user_permissions root

8.3.1、案例:看admin用户下的权限

rabbitmqctl list_user_permissions admin

在这里插入图片描述

8.4、清除用户权限

rabbitmqctl clear_permissions {username}

8.4.1、案例:清除bpm用户的权限

rabbitmqctl clear_permissions bpm

在这里插入图片描述

9、策略命令

9.1、设置镜像队列

9.1.1、使用场景

1. 搭建集群
2. 使用set_ policy 命令设置镜像队列策略

9.1.2、命令

 
rabbitmqctl set_ policy [-p Vhost] Name Pattern Definition [Priority]
rabbitmqctl set_ policy Vhost 策略名称 正则表达式 策略定义 优先级
 
Definition:策略定义
  1. ha-mode:指明镜像队列的模式
  2. ha-params: ha-mode模式需要用到的参数
  3. ha-svnc-mode:进行队列中消息的同步方式,有效值为automatic和manual
ha-mode
  1. all:表示在集群中所有的节点上进行镜像
  2. exactly:表示在指定个数的节点上进行镜像,节点的个数由ha-params指定
  3. nodes:表示在指定的节点上进行镜像,节点名称通过ha-params指定

9.1.3、设置镜像队列策略案例

9.1.3.1、匹配所有队列,并将镜像配置到集群中的所有节点
rabbitmqctl set_policy ha-all "^" '{"ha-mode":"all"}'

9.1.3.2、名称以"two"开始的队列镜像到群集中的任意两个节点
rabbitmqctl set_policy ha-two "^two." '{"ha-mode" :" exactly" ,"ha-params":2,"ha-sync-mode":" automatic}'
9.1.3.3、以" node"开头的队列镜像到集群中的特定节点
rabbitmqctl set_policy ha-nodes "^ nodes." '{"ha-mode":" nodes" ,"ha-params" :["rabbit@nodeA", "rabbit@nodeB"]}'

9.2、策略查看

rabbitmqctl list_policies [-p <vhost>]

9.3、策略清除

rabbitmqctl clear_policy [-p <vhost>] <name>

10、vhost命令

10.1、创建一个新的 vhost

rabbitmqctl add vhost {vhostName}

# 创建一个新的vhost,名称为vhostl
# rabbitmqctl add vhost vhostl

vhostName:vhost 的名称

10.2、删除一个vhost

rabbitmqctl delete_vhost {vhostName}

# rabbitmqctl delete_vhost vhostl
  1. 删除一个vhost
  2. 同时也会删除其下所有的队列、交换器、绑定关系、 用户权限、参数和策略等信息

10.3、罗列出所有虚拟机

rabbitmqctl list_vhosts [name,tracing]
  1. name:罗列出所有虚拟机
  2. tracing:表示是否使用了 RabbitMQ 的 trace 功能
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值