如何查询RabbitMQ使用的分布式协议?能否通过CLI工具获取该信息?
查询RabbitMQ队列的分布式类型(镜像/仲裁)
可以通过RabbitMQ的CLI工具(rabbitmqctl)直接获取队列的分布式类型信息,以下是具体方法:
1. 查看队列的基础类型
使用rabbitmqctl list_queues命令指定type字段,可区分队列是经典队列(classic)还是仲裁队列(quorum):
# 查看指定虚拟主机下所有队列的名称和类型 rabbitmqctl list_queues name type --vhost /
- 输出中
type为quorum的就是仲裁队列 type为classic的则是经典队列,这类队列可能是普通单节点队列,也可能是开启了镜像模式的镜像队列,需要进一步验证
2. 判断经典队列是否为镜像队列
对于类型为classic的队列,通过查看队列的arguments属性,确认是否包含镜像相关配置:
# 查看队列的名称、类型及参数 rabbitmqctl list_queues name type arguments --vhost /
在输出的arguments字段中,若存在"x-ha-policy"键,且值为"all"、"nodes"或"exactly",则说明该经典队列是镜像队列。
也可以通过查看集群的镜像策略来确认:
# 查看所有镜像策略 rabbitmqctl list_policies --vhost /
若策略的definition中包含"ha-mode"配置,且该策略匹配目标队列,则对应队列会被设置为镜像队列。
3. 快速筛选目标队列
如果只想查看仲裁队列或镜像队列,可以结合shell命令过滤输出:
# 筛选所有仲裁队列 rabbitmqctl list_queues name type --vhost / | grep quorum # 筛选包含镜像配置的经典队列 rabbitmqctl list_queues name arguments --vhost / | grep '"x-ha-policy"'
内容的提问来源于stack exchange,提问作者孙海城
相关产品推荐
相关产品推荐

