在 RabbitMQ 中,可以使用命令查看消费者状态信息。每行将显示由制表符分隔的己订阅队列的名称、相关信道的进程标识、consumerTag、是否需要消费端确认、prefetch_count 及参数列表这些信息。命令格式如下:
rabbitmqctl [--node <node>] [--longnames] [--quiet] list_consumers [--vhost <vhost>] [--no-table-headers] [<columninfoitem> ...] [--timeout <timeout>]
参数说明:
-?, --help:显示命令的帮助信息
-n <node>, --node <node>:连接到指定的节点 <node>
-l, --longnames:使用长主机名
-t, --timeout <n>:对于支持它的命令,以秒为单位的操作超时
-q, --quiet:抑制提示性消息的输出
-s, --silent:抑制提示性消息的输出和表格标题行
-p, --vhost:对于作用域为虚拟主机的命令,要使用的虚拟主机
--formatter:如果支持,则使用替代结果格式化程序:JSON、Pretty_TABLE、TABLE、CSV、Erlang 并非所有命令都支持所有(或任何)替代格式化程序。
其中,columninfoitem 参数用于指示哪些信息项会包含在结果集中,结果集的列顺序将匹配参数的顺序。channelinfoitem 可选值如下:
ack_required:表示消费消息时,channel.basicConsume() 中是否自动提交,true 表示开启了自动提交,false 表示手动提交
active:消费者是否活跃,即消费者是否可以从队列中获取消息。 当为队列启用单个活动消费者时,一次只有一个消费者处于活动状态。当队列禁用单个活动消费者时,消费者默认处于活动状态。 对于仲裁队列,消费者可能因为其所属节点被怀疑关闭而处于非活动状态。
activity_status:活动状态
arguments:信道参数
channel_pid:信道的 Erlang 进程 ID
consumer_tag:消费者的标签
prefetch_count:服务器将传递的最大消息数,如果不受限制,则为0
queue_name:队列名称
(1)如果没有指定 columninfoitem 参数信息,默认将显示 queue_name、channel_pid、consumer_tag、ack_required、prefetch_count、active 和 arguments 信息。
D:\server\rabbitmq_server-3.9.11\sbin> rabbitmqctl list_consumers Listing consumers in vhost / ... queue_name channel_pid consumer_tag ack_required prefetch_count active arguments amq.gen-PbDpbBKj3_nD6SRaG1t-2g <rabbit@hxstrive.1648180398.4721.0> amq.ctag-pkf7lpWvDUlSljQ-J8duRg true true []
(2)手动指定 columninfoitem 参数信息,显示消费者的 queue_name、ack_required
D:\server\rabbitmq_server-3.9.11\sbin> rabbitmqctl list_consumers queue_name ack_required Listing consumers in vhost / ... queue_name ack_required amq.gen-IVcf2RyRlY6ZI_wSfQo7Hg false