文章目录
使用CLI管理RabbitMQ
RabbitMQ CLI 工具需要安装兼容的 Erlang/OTP版本。
这些工具假定系统区域设置为 UTF-8(例如en_GB.UTF-8或en_US.UTF-8)。如果不是这种情况,这些工具可能仍能正常运行,但不能保证。非 UTF-8 区域将发出警告。
除了 之外rabbitmqadmin,上述所有工具都随 RabbitMQ 一起提供,可sbin 在安装根目录中找到。对于大多数软件包类型,该目录PATH在安装时都会添加到其中,如果是使用二进制包安装,需要手动配置sbin目录的这些命令到系统PATH。
所有命令都可以使用help列出子命令或者参数
rabbitmqctl
通常仅供 RabbitMQ 管理员使用,因为它提供对节点的完全控制,包括虚拟主机、用户和权限管理、对节点数据的破坏性操作等。
rabbitmqctl是一个用于管理RabbitMQ的命令行工具,它可以用于创建和删除队列、交换机以及其他RabbitMQ对象,还可以查看和修改RabbitMQ节点的状态。以下是一些常用的
以下进列出常用rabbitmqctl命令及其功能描述,更多信息请参考help帮助或者官方文档:https://www.rabbitmq.com/docs/3.13/man/rabbitmqctl.8
节点管理
关闭RabbitMQ服务及运行时 (Erlang VM)
rabbitmqctl shutdown
启动和停止RabbitMQ应用
启动RabbitMQ应用,该命令会启动RabbitMQ消息代理服务器并使其可用。
rabbitmqctl start_app
停止RabbitMQ应用,该命令会停止RabbitMQ消息代理服务器,但不关闭Erlang虚拟机。
rabbitmqctl stop_app
用于重置 RabbitMQ 节点。这个命令会清除节点上的所有数据,包括队列、交换机、绑定、用户、权限和虚拟主机等
rabbitmqctl reset
查看RabbitMQ状态
该命令会显示RabbitMQ服务器的当前状态,包括节点信息、队列信息、交换机信息等。
rabbitmqctl status
用户管理
添加新用户:该命令会创建一个新的RabbitMQ用户,并指定其密码。
rabbitmqctl add_user <username> <password>
[root@rbt01 ~]# rabbitmqctl add_user admin-user01 user01pwd
Adding user "admin-user01" ...
Done. Don't forget to grant the user permissions to some virtual hosts! See 'rabbitmqctl help set_permissions' to learn more.
设置用户角色:该命令会为指定用户设置角色标签,常见的标签包括administrator(管理员)、monitoring(监控)和management(管理)等。
rabbitmqctl set_user_tags <username> <tag>。
[root@rbt01 ~]# rabbitmqctl set_user_tags admin-user01 administrator
Setting tags for user "admin-user01" to [administrator] ...
列出所有用户:该命令会列出所有RabbitMQ用户及其角色信息。
[root@rbt01 ~]# rabbitmqctl list_users
[root@rbt01 ~]# rabbitmqctl list_users
Listing users ...
user tags
admin [administrator]
admin-user01 [administrator]
guest [administrator]
删除用户:该命令会删除指定名称的RabbitMQ用户。
rabbitmqctl delete_user <username>
[root@rbt01 ~]# rabbitmqctl delete_user admin-user01
Deleting user "admin-user01" ...
权限管理
设置用户对虚拟主机的权限:该命令会为指定用户在指定虚拟主机上设置配置(conf)、写(write)和读(read)权限。其中:
<vhost>是虚拟主机名,
<username>是用户名,
<conf>、<write>和<read>分别是对应的权限值(可以使用”.*”表示所有权限,””表示没有权限)。
rabbitmqctl set_permissions -p <vhost> <username> <conf> <write> <read>
全权限
[root@rbt01 ~]# rabbitmqctl set_permissions -p / admin-user01 ".*" ".*" ".*"
Setting permissions for user "admin-user01" in vhost "/" ...
只读权限
配置和写入权限被设置为空字符串(表示不允许),而读取权限被设置为 “.*”(表示允许读取所有队列、交换机和路由键)。
rabbitmqctl set_permissions -p <vhost> <username> "" "" ".*"
[root@rbt01 ~]# rabbitmqctl add_vhost /vhost-test01
Adding vhost "/vhost-test01" ...
[root@rbt01 ~]# rabbitmqctl set_permissions -p /vhost-test01 admin-user01 "" "" ".*"
Setting permissions for user "admin-user01" in vhost "/vhost-test01" ...
写入权限(无配置和读取):
rabbitmqctl set_permissions -p “” “.*” “”
[root@rbt01 ~]# rabbitmqctl set_permissions -p /vhost-test01 admin-user01 "" ".*" ""
Setting permissions for user "admin-user01" in vhost "/vhost-test01" ...
特定队列的读写权限:
正则表达式 “^specific.queue$” 用于匹配名为 specific.queue 的特定队列。用户将只有对该队列的配置、写入和读取权限。
rabbitmqctl set_permissions -p <vhost> <username> "^specific\.queue$" "^specific\.queue$" "^specific\.queue$"
多个队列的读写权限
rabbitmqctl set_permissions -p <vhost> <username> "^(queue1|queue2)\." "^(queue1|queue2)\." "^(queue1|queue2)\."
无权限
rabbitmqctl set_permissions -p <vhost> <username> "" "" ""
[root@rbt01 ~]# rabbitmqctl set_permissions -p /vhost-test01 admin-user01 "" "" ""
Setting permissions for user "admin-user01" in vhost "/vhost-test01" ...
虚拟主机管理
添加虚拟主机:该命令会创建一个新的RabbitMQ虚拟主机。
rabbitmqctl add_vhost <vhost>
[root@rbt01 ~]# rabbitmqctl add_vhost /vhost-test02
Adding vhost "/vhost-test02" ...
列出所有虚拟主机:该命令会列出所有RabbitMQ虚拟主机。
rabbitmqctl list_vhosts
[root@rbt01 ~]# rabbitmqctl list_users
Listing users ...
user tags
admin [administrator]
admin-user01 [administrator]
guest [administrator]
删除虚拟主机:该命令会删除指定名称的RabbitMQ虚拟主机。
rabbitmqctl delete_vhost <vhost>
[root@rbt01 ~]# rabbitmqctl delete_vhost /vhost-test02
Deleting vhost "/vhost-test02" ...
队列管理
列出所有队列:该命令会列出所有RabbitMQ队列及其详细信息。
rabbitmqctl list_queues
清空队列:这两个命令都可以清空指定队列中的所有消息。
rabbitmqctl clear_queue <queue_name>或rabbitmqctl purge_queue <queue_name>
列出所有交换机:该命令会列出所有RabbitMQ交换机。
rabbitmqctl list_exchanges
列出所有绑定:该命令会列出所有RabbitMQ绑定。
rabbitmqctl list_bindings
设置交换机和队列绑定
rabbitmqctl bind_queue -p vhost_name queue_name exchange_name routing_key
设置镜像复制策略
rabbitmqctl set_policy ha-three-replicas "^queue_name$" '{"ha-mode":"exactly","ha-params":3,"ha-sync-mode":"automatic"}' --apply-to queues
查看队列和策略的关联
rabbitmqctl list_queues name policy
清除队列里的消息
rabbitmqctl -p vhostpath purge_queue blue
集群管理
将节点加入集群:该命令会将当前节点加入到指定集群中。
rabbitmqctl join_cluster --ram <clusternode>
或rabbitmqctl join_cluster <clusternode>(默认为disc节点)
root@rbt02 ~]# rabbitmqctl join_cluster rabbit@rbt01
Clustering node rabbit@rbt02 with rabbit@rbt01
查看集群状态:该命令会显示RabbitMQ集群的状态,包括集群中的节点及其状态。
rabbitmqctl cluster_status
改变集群节点类型:该命令会改变集群节点的类型,可以是disc节点或ram节点。
磁盘节点(disc node)和内存节点(RAM node)。磁盘节点会将所有的元数据存储在磁盘上,而内存节点则会将元数据存储在内存中。内存节点通常具有更快的访问速度,因为它们不需要从磁盘读取数据,但是它们也更容易在节点重启或崩溃时丢失数据。
rabbitmqctl [--node <node>] [--longnames] [--quiet] change_cluster_node_type <disc | ram>
# 需要先停止app
[root@rbt01 ~]# rabbitmqctl stop_app
Stopping rabbit application on node rabbit@rbt01 ...
[root@rbt01 ~]# rabbitmqctl --node rabbit@rbt01 change_cluster_node_type ram
Turning rabbit@rbt01 into a ram node
[root@rbt01 ~]# rabbitmqctl start_app
Starting node rabbit@rbt01 ...
# 查看集群状态,rabbit@rbt01变为了RAM Nodes
[root@rbt01 ~]# rabbitmqctl cluster_status
Cluster status of node rabbit@rbt01 ...
Basics
Cluster name: rabbitmq-cluster-01
Total CPU cores available cluster-wide: 12
Disk Nodes
rabbit@rbt02
rabbit@rbt03
RAM Nodes
rabbit@rbt01
远程移除集群节点:该命令会远程移除一个集群节点,如果节点未脱机,则需要使用–offline参数。
rabbitmqctl forget_cluster_node [--offline] <clusternode>
以下是命令的详细说明:
[root@rbt01 ~]# rabbitmqctl -n rabbit@rbt01 forget_cluster_node rabbit@rbt03
Removing node rabbit@rbt03 from the cluster
- forget_cluster_node:用于从集群的节点列表中移除一个节点。
允许从脱机节点中删除节点。这仅在所有节点都脱机并且最后一个要关闭的节点无法联机的情况下有用,从而阻止整个集群启动。它不应该在任何其他情况下使用,因为它可能会导致不一致。 - [–offline]:可选参数。官方文档说,如果指定了这个参数,那么即使指定的节点当前无法访问(例如,因为它已经宕机或无法联网),集群也会从它的节点列表中移除该节点。如果不指定这个参数,并且指定的节点当前无法访问,那么命令可能会失败。
但实际测试和官网有些出入,实际测试时,3个节点,手动ifdown rbt03节点的网卡,从另外2个节点均ping不同rbt03,带此参数进行操作,提示如下:
[root@rbt01 ~]# rabbitmqctl -n rabbit@rbt01 forget_cluster_node --offline rabbit@rbt03
Error: this command requires the target node to be stopped.
不带—offine 参数执行成功
[root@rbt01 ~]# rabbitmqctl -n rabbit@rbt01 forget_cluster_node rabbit@rbt03
Removing node rabbit@rbt03 from the cluster
<clusternode>
:这是你要从集群中移除的节点的名称。通常,这个名称的格式是rabbit@<hostname>
,其中<hostname>
是节点的主机名。
使用forget_cluster_node命令时需要注意以下几点:
- 数据丢失风险:如果你移除的节点是磁盘节点,并且上面存储了集群的元数据(例如,它是集群中的一个原始节点或它持有队列的元数据),那么这些数据将会丢失。因此,在移除节点之前,请确保你已经做好了必要的数据备份。
- 集群一致性:在移除节点之前,请确保集群中的其他节点都是健康的,并且集群处于一致状态。否则,移除节点可能会导致集群进入不一致状态。
- 停止节点:在移除节点之前,通常建议先停止该节点上的RabbitMQ服务。这可以通过rabbitmqctl stop命令来实现。然而,如果你使用了–offline参数,那么即使节点没有停止,你也可以从集群中移除它。但请注意,这样做可能会增加数据丢失的风险。
- 重新平衡:移除节点后,你可能需要手动重新平衡集群中的队列和连接,以确保集群的性能和可靠性。
rabbitmq-queues
cluster集群管理
默认创建的仲裁队列副本数为3(需要在web管理界面创建),即使是集群节点数大于3,比如,测试集群节点为5,
仲裁队列增加集群节点
通过在指定节点上为所有匹配的队列添加成员(副本)来增长仲裁队列集群。
rabbitmq-queues [--node <node>] [--longnames] [--quiet] grow <node> <all | even> [--vhost-pattern <pattern>] [--queue-pattern <pattern>] [--membership <promotable|voter>]
<--node>
用于放置副本的节点名称
<all | even>
为所有匹配的队列或仅为成员计数为偶数的队列添加成员
--queue-pattern
用于匹配队列名称的正则表达式
--vhost
匹配虚拟主机名的正则表达式
--membership
添加可晋升的非投票人(默认)或正式投票人
--errors-only
仅列出报告错误的队列
为所有匹配的队列,vhost为/,匹配所有queue 增加‘rbt04’副本节点
rabbitmq-queues grow "rabbit@rbt04" "all" --vhost-pattern "/" --queue-pattern ".*"
仅为副本数为偶数的队列,vhost为/,匹配所有queue, 增加‘rbt05’副本节点
[root@rbt01 ~]# rabbitmq-queues grow "rabbit@rbt05" "even" --vhost-pattern "/" --queue-pattern
".*"
因使用了even参数,只匹配了偶数节点的queue-quorum-02
重新平衡仲裁队列leader所在节点
在正在运行的集群节点之间重新平衡复制队列的领导者
用法:
rabbitmq-queues [--node <node>] [--longnames] [--quiet] rebalance < all | classic | quorum | stream > [--vhost-pattern <pattern>] [--queue-pattern <pattern>]
<type>
队列类型,必须是以下之一:all、classic、quorum、stream
--queue-pattern <pattern>
用于匹配队列名称的正则表达式
--vhost-pattern <pattern>
匹配虚拟主机名的正则表达式
对vhost /下,所有的queue,进行重新平衡leader
[root@rbt01 ~]# rabbitmq-queues rebalance "all" --vhost-pattern "/" --queue-pattern ".*"
重新平衡后,3个队列的leader 由原来的全部为rbt01,变成了rbt01,rbt03,rbt04
仲裁队列减少集群节点
用法:
rabbitmq-queues [--node <node>] [--longnames] [--quiet] shrink <node> [--errors-only]
<node>
从中删除副本的节点名称
--errors-only
仅列出报告错误的队列
[root@rbt01 ~]# rabbitmq-queues shrink rabbit@rbt04
Shrinking quorum queues on rabbit@rbt04...
vhost name size result
/ queue-quorum-03 2 ok
/ queue-quorum-01 4 ok
/ queue-quorum-02 4 ok
[root@rbt01 ~]# rabbitmq-queues shrink rabbit@rbt05
Shrinking quorum queues on rabbit@rbt05...
vhost name size result
/ queue-quorum-01 3 ok
/ queue-quorum-02 3 ok
Replication副本管理
用于队列(尤其是仲裁队列)的维护任务, 管理复制队列的副本
add_member 在给定节点上添加仲裁队列成员(副本)
rabbitmq-queues add_member --vhost / queue-quorum-01 rabbit@rbt04
rabbitmq-queues add_member --vhost / queue-quorum-01 rabbit@rbt05
delete_member删除给定节点上的仲裁队列成员(副本)。
rabbitmq-queues delete_member --vhost / queue-quorum-01 rabbit@rbt01
rabbitmq-queues delete_member --vhost / queue-quorum-01 rabbit@rbt02
队列监控及健康检查
- check_if_cluster_has_classic_queue_mirroring_policy
如果集群中有启用经典队列镜像的策略,则会以非零代码退出健康检查。自2021年以来,经典队列镜像已被弃用,并在RabbitMQ 4.0开发周期中被完全删除。
rabbitmqadmin declare queue name=queue-classic-02 durable=true
rabbitmqctl set_policy --priority 0 --apply-to queues queue_classic_policy01 "^queue-classic-02" '{"ha-mode":"exactly","ha-params":3,"ha-sync-mode":"automatic"}'
rabbitmq-queues check_if_cluster_has_classic_queue_mirroring_policy
[root@rbt01 ~]# echo $?
69
- check_if_new_quorum_queue_replicas_have_finished_initial_sync
- 如果当前节点上有运行可升级副本的队列,则以非零代码退出健康检查。
- 当你使用 quorum 队列时,这是一种提供高可用性(HA)和数据一致性的队列类型。它依赖于多个队列副本(replicas)来确保消息不会丢失,并且队列可以在集群的节点之间可靠地迁移。在创建或重新配置 quorum 队列后,这些队列副本需要进行初始同步,以确保所有副本都拥有相同的消息状态。
- 这个操作或检查,通常是在自动化脚本或监控系统中进行的,目的是确认新添加的或重新配置的 quorum 队列副本是否完成了初始同步过程。这是非常重要的,因为只有在所有副本都同步完成后,队列才能被认为是健康且可以正常使用的。
-
check_if_node_is_mirror_sync_critical
如果存在没有在线同步镜像的经典镜像队列(如果目标节点关闭,这些队列可能会丢失数据),则以非零代码退出健康检查
-
check_if_node_is_quorum_critical
如果存在具有最低在线仲裁的队列/流(如果目标节点关闭,这些队列/流将失去其仲裁),则以非零代码退出的健康检查
-
list_operator_policies_with_classic_queue_mirroring
列出启用经典队列镜像的所有操作员策略
-
list_policies_with_classic_queue_mirroring
列出启用经典队列镜像的所有策略
-
peek
rabbitmq-queues peek --vhost “a-vhost” “a-queue” “1”
显示队列中给定位置的消息的详细信息。当前只有仲裁队列支持此命令。
-
quorum_status
查看指定的仲裁队列状态
RabbitMQ Quorum队列(Raft队列)的状态信息中, quorum_status列出的是与Raft算法相关的关键指标。- Last Log Index:
表示节点Raft日志中最后一条日志条目的索引值。
这个值反映了节点接收到的最新日志条目的位置。 - Last Written:
表示节点最后写入到Raft日志中的日志条目的索引值。
在正常情况下,Last Written 应该与 Last Log Index 相同,表示所有接收到的日志条目都已经被写入。 - Last Applied:
表示节点最后应用到其状态机(在这个情况下是RabbitMQ队列的状态)的日志条目的索引值。
在Raft算法中,日志条目在被提交(Commit Index)之后,才会被应用到状态机上。
因此,Last Applied 应该小于或等于 Commit Index。 - Commit Index:
表示已经被集群中大多数节点(包括领导者)确认并可以安全应用到状态机的日志条目的索引值。
一旦日志条目达到了 Commit Index,它就可以被应用到状态机上,并且这个操作是安全的,即使在未来发生领导者变更或节点故障。 - Snapshot Index:
表示节点最近一次创建快照时,快照中包含的日志条目的最大索引值。
快照是一种优化技术,用于减少Raft日志的大小,并加速新节点的加入和故障恢复过程。
如果还没有创建快照,这个值可能是 undefined 或其他表示未设置的标志。 - Term:
表示当前领导者或选举周期的编号。
在Raft算法中,每当发生领导者选举时,Term 的值就会增加。
Term 用于确保选举的安全性,防止旧的领导者在失去联系后重新成为领导者。 - Machine Version:
表示RabbitMQ节点上运行的Raft算法实现的版本号。
这个值有助于了解节点是否运行了相同版本的Raft算法实现,这对于集群的一致性和兼容性很重要。
- Last Log Index:
-
stream_status
显示stream 队列的状态
rabbitmq-queues stream_status queue-stream-01
rabbitmq-diagnostics
用于诊断监测和健康检查
alarms
列出集群中的资源警报(如果有)
check_certificate_expiration
检查证书是否即将到期
rabbitmq-diagnostics [–node ] [–longnames] [–quiet] check_certificate_expiration [–within ] [–unit ]
–unit 指定时间单位,years,months,weeks,days
–within 时间单位的数值,比如默认是4 weeks
check_local_alarms
如果目标节点上有警报,则健康检查失败(返回非零代码)。
check_port_connectivity
如果目标节点上的任何侦听器端口无法接受由以下方式打开的新 TCP 连接,则健康检查失败(返回非零代码),该检查仅验证新的 TCP 连接是否被接受。它不执行消息传递协议握手或身份验证。
check_port_listener
检查指定端口是否在监听,健康检查失败(返回非零代码)
check_running
检查RabbitMQ节点是否正在运行。
如果 RabbitMQ 应用程序未在目标节点上运行,则健康检查失败(返回非零代码)。
erlang_cookie_hash
输出目标节点用于验证 CLI 工具和对等节点的共享密钥的哈希值。该值可与 CLI 工具错误消息中找到的哈希值进行比较。
check_if_any_deprecated_features_are_used
检查是否有不推荐的特性在使用
consume_event_stream
于实时消费(即接收和处理)RabbitMQ 节点的事件流。这个命令可以帮助管理员监控和调试 RabbitMQ 集群的状态和性能,因为它能够实时展示各种内部事件,比如队列的创建和删除、连接的建立与断开、消息的发布和消费等。
runtime_thread_stats
对间隔x秒(默认5秒)的运行时(内核)线程活动进行采样并报告
cluster_status
显示RabbitMQ集群的状态信息,包括节点、队列等。
memory_breakdown
显示RabbitMQ节点的内存使用情况。
code: Erlang虚拟机中加载的代码(字节码和模块元数据)所占用的内存。
other_system: Erlang 虚拟机内部使用的内存,不包括代码、进程堆或ETS表等。这个类别通常包括Erlang运行时的内部结构和数据。
other_proc: 与Erlang进程相关的内存,但不包括明确列出的其他进程类别(如连接、队列进程等)。
allocated_unused: 已分配但当前未使用的内存。这可能是因为内存被预先分配以优化性能,但当前未被实际使用。
other_ets: Erlang的ETS(Erlang Term Store)表使用的内存,ETS是Erlang中用于存储键值对的一种数据结构。
reserved_unallocated: 保留但尚未分配的内存。这通常是为了将来的内存需求而预留的。
atom: Erlang中的原子表使用的内存,原子是Erlang中用于存储字符串和整数的全局符号表。
plugins: RabbitMQ插件使用的内存。
metrics: 与RabbitMQ性能指标相关的内存使用。
binary: 二进制数据(如消息体)使用的内存。
mgmt_db: 管理数据库使用的内存,RabbitMQ的管理插件使用此数据库来存储配置和管理信息。
msg_index: 消息索引使用的内存,这有助于快速查找和检索消息。
metadata_store 和 metadata_store_ets: 与RabbitMQ内部元数据存储相关的内存使用。
mnesia: Mnesia数据库使用的内存,Mnesia是Erlang的一个分布式数据库管理系统,RabbitMQ使用它来持久化队列、交换机和绑定等元数据。
check_local_alarms
检查RabbitMQ节点是否有本地警报。
maybe_stuck
用于检查 RabbitMQ 节点上是否存在可能卡死的队列、通道或连接。这个命令通过分析
RabbitMQ 的内部状态,尝试识别出那些长时间没有活动或可能遇到问题的资源。
log_tail_stream
observer
观察RabbitMQ节点上Erlang VM(虚拟机)的运行状况,并提供类似UNIX top命令的信息。包括进程ID、CPU使用率、内存使用情况。
Ping
它会尝试与指定的 RabbitMQ 节点(通常是运行该命令所在的节点,除非你明确指定了其他节点)建立连接,并发送一个“ping”请求。如果 RabbitMQ 服务正在运行并且响应了这个请求,那么你会看到一个成功的消息,表明你能够与 RabbitMQ 节点进行通信。
rabbitmq-plugins
【用于插件的开闭管理】
打印插件列表
rabbitmq-plugins list
开启插件
禁用插件
rabbitmq-streams
用于流的维护任务
rabbitmq-upgrade
与升级相关的维护任务
post_upgrade
运行升级后任务。在当前版本中,它会在集群中的所有节点上执行镜像和仲裁队列的重新平衡。
await_online_quorum_plus_one
等待所有仲裁队列的在线仲裁数高于最低值。这可确保目标节点关闭时不会有任何队列失去仲裁数。
drain
将节点置于维护模式。此类节点将不会为任何客户端流量提供服务,也不会考虑托管任何队列领导者副本。
revive
使节点退出维护状态并进入常规操作模式。此类节点将再次为客户端流量提供服务,并考虑将其作为队列领导者副本放置。
rabbitmqadmin
用于通过HTTP API执行操作员任务
在开启了rabbitmq_management 插件后,可以使用以下命令下载rabbitmqadmin
创建queue
# 默认创建classic类型的queue,durable设置为true,开启持久化
rabbitmqadmin -H localhost -u guest -p guest declare queue name=my_queue durable=true
# 创建quorum类型队列,并开启持久化
rabbitmqadmin declare queue name=queue_quorum_02 durable=true arguments='{"x-queue-type": "quorum"}'
删除queue
rabbitmqadmin delete queue name=queue-t1-rabbitmq-test
创建exchange
rabbitmqadmin declare exchange name=my_exchange-01 type=direct durable=true
绑定exchange和queue并制定routing_key
rabbitmqadmin -u guest -p guest declare binding source=my_exchange destination=my_queue routing_key=my_routing_key
查看绑定
rabbitmqadmin list bindings
设置classic队列镜像复制策略
rabbitmqadmin declare policy name=ha-three-replicas pattern="^queue_name$" definition='{"ha-mode":"exactly","ha-params":3,"ha-sync-mode":"automatic"}' apply-to=queues
列出镜像策略
rabbitmqadmin list policies
发布消息
rabbitmqadmin publish routing_key=t1_queue_01 payload="hello world 001"
使用路由转发消息
rabbitmqadmin publish routing_key=t1_queue_01 exchange=topic-exchanges-03 payload="hello world 002"
查看消息,不消费
rabbitmqadmin get queue=t1_queue_01
清空队列中的消息
rabbitmqadmin purge queue name=queue-quorum-01