版本
[root@localhost ~]# rabbitmqctl version
3.8.9
一般情况下,我们会使用 rabbitmq_management 插件,通过 Web UI 的方式来监控和操作 RabbitMQ(端口 15672),但有时候命令的方式会更加方便一些,RabbitMQ 提供了 CLI 管理工具 rabbitmqadmin ,其实就是基于 RabbitMQ 的 HTTP API,用 Python 写的一个脚本。
另外,除了 rabbitmqadmin ,有个人也写了一个 rabbitmq-dump-queue 脚本,用于抓取 Queue 队列,用文件进行存储,但使用下来,感觉还是官方的 rabbitmqadmin 比较好些。
rabbitmqadmin 提供了下面功能:
- 列出 exchanges, queues, bindings, vhosts, users, permissions, connections and channels。
- 创建和删除 exchanges, queues, bindings, vhosts, users and permissions。
- 发布和获取消息,以及消息详情。
- 关闭连接和清空队列。
- 导入导出配置。
使用 rabbitmqadmin 的时候,我们需要理解 RabbitMQ 的基本概念,先回顾一下:
RabbitMQ 概念:
概念 | 详解 |
---|---|
Exchange | 消息交换机,它指定消息按什么规则,路由到哪个队列 |
Queue | 消息队列,每个消息都会被投入到一个或多个队列 |
Binding | 绑定,它的作用就是把 exchange 和 queue 按照路由规则绑定起来 |
Routing Key | 路由关键字,exchange 根据这个关键字进行消息投递 |
Vhost | 虚拟主机,可以开设多个 vhost,用作不同用户的权限分离 |
Producer | 消息生产者,就是投递消息的程序 |
Consumer | 消息消费者,就是接受消息的程序 |
Channel | 消息通道,在客户端的每个连接里,可建立多个 channel,每个 channel 代表一个会话任务 |
RabbitMQ 流程:
RabbitMQ 投递过程:
- 1. 客户端连接到消息队列服务器,打开一个 channel。
- 2. 客户端声明一个 exchange,并设置相关属性。
- 3. 客户端声明一个 queue,并设置相关属性。
- 4. 客户端使用 routing key,在 exchange 和 queue 之间建立好绑定关系。
- 5. 客户端投递消息到 exchange。
- 6. 客户端从指定的 queue 中消费信息。
接下来,我们就用 rabbitmqadmin ,来演示上面 RabbitMQ 投递过程。
如果我们安装了rabbitmq_management
插件,可以打开http://192.168.1.36:15672/cli/
页面,下载 rabbitmqadmin。
或者直接进行下载:
[root@localhost~]# wget http://192.168.1.36:15672/cli/rabbitmqadmin
然后移到PATH
目录,并赋予权限:
[root@localhost ~]# mv rabbitmqadmin /usr/local/bin
[root@localhost ~]# sudo chmod 777 /usr/local/bin/rabbitmqadmin
查看 rabbitmqadmin 命令:
[root@node1 ~]# rabbitmqadmin -help
Usage
=====
rabbitmqadmin [options] subcommand
...
1.交换机默认的方式(使用的默认 Exchange 是空字符串(系统中的第一个 Exchange,Binding 中的 source 部分),并且这个默认的 Exchange 是direct
类型(也就是一对一模式,精确匹配),这种隐式调用确保了消息准确投递)
1.1 创建一个test
队列:
[root@localhost ~]# rabbitmqadmin declare queue name=test durable=true
queue declared
[root@localhost ~]# rabbitmqadmin list queues
+------+----------+
| name | messages |
+------+----------+
| test | 0 |
+------+----------+
[root@localhost ~]# rabbitmqadmin list bindings
+--------+-------------+-------------+
| source | destination | routing_key |
+--------+-------------+-------------+
| | test | test |
+--------+-------------+-------------+
需要注意:没有之情vhost默认用"/"。
durable=true
表示持久化,如果没有创建 Exchange,RabbitMQ 会使用默认的 Exchange,以及创建一个 Binding,这也就是为什么下面发布消息,可以成功的原因。
1.2 发布一条消息: 因为交换机默认是direct进准匹配,所以routing_key=test。下面说明有一条消息了。
[root@localhost ~]# rabbitmqadmin publish routing_key=test payload="hello world"
Message published
[root@localhost ~]# rabbitmqadmin list queues
+------+----------+
| name | messages |
+------+----------+
| test | 1 |
+------+----------+
1.3 消费一条消息(查看消息内容): rabbitmqadmin get 可以指定ackmode模式
[root@localhost ~]# rabbitmqadmin get queue=test
+-------------+----------+---------------+-------------+---------------+------------------+------------+-------------+
| routing_key | exchange | message_count | payload | payload_bytes | payload_encoding | properties | redelivered |
+-------------+----------+---------------+-------------+---------------+------------------+------------+-------------+
| test | | 0 | hello world | 11 | string | | False |
+-------------+----------+---------------+-------------+---------------+------------------+------------+-------------+
在服务器端的客户端页面从队列中获取消息是一个危险的动作,生产环境一定要了解业务之后再做操
Act Mode
- Nack message requeue true
获取消息,但是不做ack应答确认,消息重新入队【队列是先进先出,拿到了消息这个消息就出队列了,现在这句话就是拿到了消息,然后又重新将消息给丢到队列里面去,其他人还可以获取到】
- Ack message requeue false
获取消息,应答确认,消息不重新入队,将会从队列中删除
- reject requeue true
拒绝获取消息,消息重新入队
- reject requeue false
拒绝获取消息,消息不重新入队,将会被删除
Encoding
AMQP消息负载可以包含任何的二进制内容,因此他们很难再浏览器中展示,编码的选 项含义有如下内容:string/base64,如果消息负载可以使用UTF-8字符串编码,就执行此 操作,否则就按照base64编码进行返回。Messages
定义一次从队列中获取的消息数量
通过代码分析
[root@localhost ~]# cat /bin/rabbitmqadmin | grep ackmode
'optional': {'count': '1', 'ackmode': 'ack_requeue_true',
[root@localhost ~]# rabbitmqadmin get queue=test ackmode="reject_requeue_true"
+-------------+----------+---------------+-------------+---------------+------------------+------------+-------------+
| routing_key | exchange | message_count | payload | payload_bytes | payload_encoding | properties | redelivered |
+-------------+----------+---------------+-------------+---------------+------------------+------------+-------------+
| test | | 0 | hello world | 11 | string | | True |
+-------------+----------+---------------+-------------+---------------+------------------+------------+-------------+
#reject_requeue_true:执行多次都不删除消息【因为重新仍回队列中去了只能一条】,只是好看消息
[root@localhost ~]# rabbitmqadmin get queue=test ackmode="reject_requeue_false"
+-------------+----------+---------------+-------------+---------------+------------------+------------+-------------+
| routing_key | exchange | message_count | payload | payload_bytes | payload_encoding | properties | redelivered |
+-------------+----------+---------------+-------------+---------------+------------------+------------+-------------+
| test | | 0 | hello world | 11 | string | | True |
+-------------+----------+---------------+-------------+---------------+------------------+------------+-------------+
[root@localhost ~]# rabbitmqadmin get queue=test ackmode="reject_requeue_false"
No items
#reject_requeue_false:执行一次删除一条消息
完成测试:
#往队列发送4条消息
[root@localhost ~]# rabbitmqadmin publish routing_key=test payload="hello world wubo111111"
Message published
[root@localhost ~]# rabbitmqadmin publish routing_key=test payload="hello world wubo222222"
Message published
[root@localhost ~]# rabbitmqadmin publish routing_key=test payload="hello world wubo333333"
Message published
[root@localhost ~]# rabbitmqadmin publish routing_key=test payload="hello world wubo444444"
Message published
#查看队列里面的消息数
[root@localhost ~]# rabbitmqadmin list queues
+------+----------+
| name | messages |
+------+----------+
| test | 3 |
+------+----------+
#消费消息,决绝处理在仍回队列中(可以多条消息)去
[root@localhost ~]# rabbitmqadmin get queue=test ackmode="reject_requeue_true"
+-------------+----------+---------------+------------------------+---------------+------------------+------------+-------------+
| routing_key | exchange | message_count | payload | payload_bytes | payload_encoding | properties | redelivered |
+-------------+----------+---------------+------------------------+---------------+------------------+------------+-------------+
| test | | 3 | hello world wubo111111 | 22 | string | | False |
+-------------+----------+---------------+------------------------+---------------+------------------+------------+-------------+
[root@localhost ~]# rabbitmqadmin get queue=test ackmode="reject_requeue_true"
+-------------+----------+---------------+------------------------+---------------+------------------+------------+-------------+
| routing_key | exchange | message_count | payload | payload_bytes | payload_encoding | properties | redelivered |
+-------------+----------+---------------+------------------------+---------------+------------------+------------+-------------+
| test | | 3 | hello world wubo111111 | 22 | string | | True |
+-------------+----------+---------------+------------------------+---------------+------------------+------------+-------------+
#消费消息,决绝处理在仍回队列中(只能是一条消息)去
[root@localhost ~]# rabbitmqadmin get queue=test ackmode="ack_requeue_true"
+-------------+----------+---------------+------------------------+---------------+------------------+------------+-------------+
| routing_key | exchange | message_count | payload | payload_bytes | payload_encoding | properties | redelivered |
+-------------+----------+---------------+------------------------+---------------+------------------+------------+-------------+
| test | | 3 | hello world wubo111111 | 22 | string | | True |
+-------------+----------+---------------+------------------------+---------------+------------------+------------+-------------+
[root@localhost ~]# rabbitmqadmin get queue=test ackmode="ack_requeue_true"
+-------------+----------+---------------+------------------------+---------------+------------------+------------+-------------+
| routing_key | exchange | message_count | payload | payload_bytes | payload_encoding | properties | redelivered |
+-------------+----------+---------------+------------------------+---------------+------------------+------------+-------------+
| test | | 3 | hello world wubo111111 | 22 | string | | True |
+-------------+----------+---------------+------------------------+---------------+------------------+------------+-------------+
#处理消息,然后删除队列中的消息,处理一条删除一条
[root@localhost ~]# rabbitmqadmin get queue=test ackmode="reject_requeue_false"
+-------------+----------+---------------+------------------------+---------------+------------------+------------+-------------+
| routing_key | exchange | message_count | payload | payload_bytes | payload_encoding | properties | redelivered |
+-------------+----------+---------------+------------------------+---------------+------------------+------------+-------------+
| test | | 3 | hello world wubo111111 | 22 | string | | True |
+-------------+----------+---------------+------------------------+---------------+------------------+------------+-------------+
[root@localhost ~]# rabbitmqadmin get queue=test ackmode="reject_requeue_false"
+-------------+----------+---------------+------------------------+---------------+------------------+------------+-------------+
| routing_key | exchange | message_count | payload | payload_bytes | payload_encoding | properties | redelivered |
+-------------+----------+---------------+------------------------+---------------+------------------+------------+-------------+
| test | | 2 | hello world wubo222222 | 22 | string | | False |
+-------------+----------+---------------+------------------------+---------------+------------------+------------+-------------+
[root@localhost ~]# rabbitmqadmin get queue=test ackmode="reject_requeue_false"
+-------------+----------+---------------+------------------------+---------------+------------------+------------+-------------+
| routing_key | exchange | message_count | payload | payload_bytes | payload_encoding | properties | redelivered |
+-------------+----------+---------------+------------------------+---------------+------------------+------------+-------------+
| test | | 1 | hello world wubo333333 | 22 | string | | False |
+-------------+----------+---------------+------------------------+---------------+------
------------+------------+-------------+
[root@localhost ~]# rabbitmqadmin get queue=test ackmode="reject_requeue_false"
+-------------+----------+---------------+------------------------+---------------+------------------+------------+-------------+
| routing_key | exchange | message_count | payload | payload_bytes | payload_encoding | properties | redelivered |
+-------------+----------+---------------+------------------------+---------------+------------------+------------+-------------+
| test | | 0 | hello world wubo444444 | 22 | string | | False |
+-------------+----------+---------------+------------------------+---------------+------------------+------------+-------------+
[root@localhost ~]# rabbitmqadmin get queue=test ackmode="reject_requeue_false"
No items
#再次查看消息队列中已经没有消息,都已经消费完
[root@localhost ~]# rabbitmqadmin list queues
+------+----------+
| name | messages |
+------+----------+
| test | 0 |
+------+----------+
需要注意:
requeue=true
表示查看队列,不消费;requeue=false
表示查看队列,进行消费
2 交换机topic(模糊匹配)模式:我们查看下上面创建队列后,默认创建的 Binding:
[root@localhost ~]# rabbitmqadmin list bindings
+--------+-------------+-------------+
| source | destination | routing_key |
+--------+-------------+-------------+
| | test | test |
+--------+-------------+-------------+
可以看到,使用的默认 Exchange 是空字符串(系统中的第一个 Exchange,Binding 中的 source 部分),并且这个默认的 Exchange 是direct
类型(也就是一对一模式),这种隐式调用确保了消息准确投递。
另外,再说一下 Binding 中的三个概念:
- Source:源头的意思,其实就是 Exchange。
- destination:目的地的意思,其实就是 Queue。
- routing_key:路由键的规则,用于 Queue 匹配(比如
test.#
)。
2.1 那下面我们就手动创建一下 Exchange:
[root@localhost ~]# rabbitmqadmin declare exchange name=my.topic type=topic
exchange declared
[root@localhost ~]# rabbitmqadmin list exchanges
+--------------------+---------+
| name | type |
+--------------------+---------+
| | direct |
| amq.direct | direct |
| amq.fanout | fanout |
| amq.headers | headers |
| amq.match | headers |
| amq.rabbitmq.trace | topic |
| amq.topic | topic |
| my.topic | topic |
需要注意:这边我们只创建了一个 Exchange,类型为 Topic,和之前创建的
test
队列,目前没有任何关系。
2.2 然后再创建一个 Binding:
[root@localhost ~]# rabbitmqadmin declare binding source=my.topic destination=test routing_key=my.#
binding declared
[root@localhost ~]# rabbitmqadmin list bindings
+----------+-------------+-------------+
| source | destination | routing_key |
+----------+-------------+-------------+
| | test | test |
| my.topic | test | my.# |
+----------+-------------+-------------+
2.3 下面我们发布两条消息:
[root@localhost ~]# rabbitmqadmin publish routing_key=my.test exchange=my.topic payload="hello world by my.test"
Message published
[root@localhost ~]# rabbitmqadmin publish routing_key=my.test.test exchange=my.topic payload="hello world by my.test.test"
Message published
[root@localhost ~]# rabbitmqadmin list queues
+------+----------+
| name | messages |
+------+----------+
| test | 2 |
+------+----------+
需要注意,发布的两条消息都指定了
my.topic
的 Exchange,但消息的routing_key
不同,但都成功发布到test
队列了,原因是my.test
和my.test.test
都符合my.#
路由规则。
2.4 下面,我们对两条消息进行消费:
[root@localhost ~]# rabbitmqadmin get queue=test ackmode="reject_requeue_false"
+-------------+----------+---------------+------------------------+---------------+------------------+------------+-------------+
| routing_key | exchange | message_count | payload | payload_bytes | payload_encoding | properties | redelivered |
+-------------+----------+---------------+------------------------+---------------+------------------+------------+-------------+
| my.test | my.topic | 1 | hello world by my.test | 22 | string | | False |
+-------------+----------+---------------+------------------------+---------------+------------------+------------+-------------+
[root@localhost ~]# rabbitmqadmin get queue=test ackmode="reject_requeue_false"
+--------------+----------+---------------+-----------------------------+---------------+------------------+------------+-------------+
| routing_key | exchange | message_count | payload | payload_bytes | payload_encoding | properties | redelivered |
+--------------+----------+---------------+-----------------------------+---------------+------------------+------------+-------------+
| my.test.test | my.topic | 0 | hello world by my.test.test | 27 | string | | False |
+--------------+----------+---------------+-----------------------------+---------------+------------------+------------+-------------+
[root@localhost ~]# rabbitmqadmin get queue=test ackmode="reject_requeue_false"
No items
[root@localhost ~]# rabbitmqadmin list queues
+------+----------+
| name | messages |
+------+----------+
| test | 0 |
+------+----------+
rabbitmqadmin 测试到这边,你应该就体会到了 RabbitMQ 的投递过程了吧,我们再对之前的投递过程完善下:
- 1. 声明一个 Queue,和谁都没有关系(只有名称和持久化配置)。
- 2. 声明一个 Exchange,和谁都没有关系(只有名称和 Exchange Type 配置)。
- 3. 声明一个 Binding,通过 source 和 destination,将 Queue 和 Exchange 关联起来,并通过 routing_key,设置发布消息的路由规则。
- 4. 发布一个消息,需要指定一个 Exchange,以及本身的路由名称就是3中声明binding过程中命名routing_key。
- 5. 消费队列中的消息,需要指定一个 Queue。
2.5 其他一些使用
2.5.1获取队列列表,其中指定了一些列
[root@localhost ~]# rabbitmqadmin list queues vhost name node messages message_stats.publish_details.rate
+-------+------+------------------+----------+------------------------------------+
| vhost | name | node | messages | message_stats.publish_details.rate |
+-------+------+------------------+----------+------------------------------------+
| / | test | rabbit@localhost | 1 | 0.0 |
+-------+------+------------------+----------+------------------------------------+
[root@localhost ~]#
2.5.2 获取队列列表,以及我们可以获取的所有详细信息
[root@localhost ~]# rabbitmqadmin -f long -d 3 list queues
--------------------------------------------------------------------------------
vhost: /
name: test
type: classic
auto_delete: False
backing_queue_status.avg_ack_egress_rate: 1.8964207071877954e-35
backing_queue_status.avg_ack_ingress_rate: 1.8964207071877954e-35
backing_queue_status.avg_egress_rate: 1.8964207071877954e-35
backing_queue_status.avg_ingress_rate: 8.874869588878465e-16
backing_queue_status.delta: ["delta", "undefined", 0, 0, "undefined"]
backing_queue_status.len: 1
backing_queue_status.mode: default
backing_queue_status.next_seq_id: 16
backing_queue_status.q1: 0
backing_queue_status.q2: 0
backing_queue_status.q3: 0
backing_queue_status.q4: 1
backing_queue_status.target_ram_count: infinity
consumer_utilisation: None
consumers: 0
durable: True
exclusive: False
exclusive_consumer_tag: None
garbage_collection.fullsweep_after: 65535
garbage_collection.max_heap_size: 0
garbage_collection.min_bin_vheap_size: 46422
garbage_collection.min_heap_size: 233
garbage_collection.minor_gcs: 72
head_message_timestamp: None
idle_since: 2022-05-13 8:52:28
memory: 14064
message_bytes: 27
message_bytes_paged_out: 0
message_bytes_persistent: 0
message_bytes_ram: 27
message_bytes_ready: 27
message_bytes_unacknowledged: 0
message_stats.ack: 0
message_stats.ack_details.rate: 0.0
message_stats.deliver: 0
message_stats.deliver_details.rate: 0.0
message_stats.deliver_get: 20
message_stats.deliver_get_details.rate: 0.0
message_stats.deliver_no_ack: 0
message_stats.deliver_no_ack_details.rate: 0.0
message_stats.get: 20
message_stats.get_details.rate: 0.0
message_stats.get_empty: 0
message_stats.get_empty_details.rate: 0.0
message_stats.get_no_ack: 0
message_stats.get_no_ack_details.rate: 0.0
message_stats.publish: 16
message_stats.publish_details.rate: 0.0
message_stats.redeliver: 5
message_stats.redeliver_details.rate: 0.0
messages: 1
messages_details.rate: 0.0
messages_paged_out: 0
messages_persistent: 0
messages_ram: 1
messages_ready: 1
messages_ready_details.rate: 0.0
messages_ready_ram: 1
messages_unacknowledged: 0
messages_unacknowledged_details.rate: 0.0
messages_unacknowledged_ram: 0
node: rabbit@localhost
operator_policy: None
policy: None
recoverable_slaves: None
reductions: 73842
reductions_details.rate: 0.0
single_active_consumer_tag: None
state: running
--------------------------------------------------------------------------------
2.5.3 另一台电脑连接
mq在192.168.1.36服务器
cpoy一下
[root@localhost ~]# scp /usr/bin/rabbitmqadmin 172.16.10.5:/usr/bin/
在 172.16.10.5 yum install python3 -y
[root@loader ~]# rabbitmqadmin -H 192.168.1.36 -u admin -p 123456aA list vhosts
+------+----------+
| name | messages |
+------+----------+
| / | 1 |
+------+----------+
[root@loader ~]# rabbitmqadmin -H 192.168.1.36 -u admin -p 123456aA list queues vhost name node messages message_stats.publish_details.rate
+-------+------+------------------+----------+------------------------------------+
| vhost | name | node | messages | message_stats.publish_details.rate |
+-------+------+------------------+----------+------------------------------------+
| / | test | rabbit@localhost | 1 | 0.0 |
+-------+------+------------------+----------+------------------------------------+
2.5.4 创建带参数的队列
[root@localhost ~]# rabbitmqadmin declare queue name=test1 name=wubo
queue declared
[root@localhost ~]# rabbitmqadmin list queues vhost name node messages message_stats.publish_details.rate
+-------+------+------------------+----------+------------------------------------+
| vhost | name | node | messages | message_stats.publish_details.rate |
+-------+------+------------------+----------+------------------------------------+
| / | test | rabbit@localhost | 1 | 0.0 |
| / | wubo | rabbit@localhost | | |
[root@localhost ~]# rabbitmqadmin list bindings
+----------+-------------+-------------+
| source | destination | routing_key |
+----------+-------------+-------------+
| | test | test |
| | wubo | wubo |
| my.topic | test | my.# |
+----------+-------------+-------------+
[root@localhost ~]# rabbitmqadmin publish routing_key=wubo payload="test wubowybowybio"
Message published
[root@localhost ~]# rabbitmqadmin list queues vhost name node messages message_stats.publish_details.rate
+-------+------+------------------+----------+------------------------------------+
| vhost | name | node | messages | message_stats.publish_details.rate |
+-------+------+------------------+----------+------------------------------------+
| / | test | rabbit@localhost | 1 | 0.0 |
| / | wubo | rabbit@localhost | 1 | 0.0 |
+-------+------+------------------+----------+------------------------------------+
2.5.5 导出/导入默认配置
rabbitmqadmin export rabbit.definitions.json
rabbitmqadmin -q import rabbit.definitions.json
2.5.6 关闭所有连接
[root@localhost ~]# rabbitmqadmin -f tsv -q list connections name | while read conn ; do rabbitmqadmin -q close connection name="${conn}" ; done
rabbitmqadmin 命令汇总:
命令 | 解释 |
---|---|
rabbitmqadmin list users | 查看所有用户 User |
rabbitmqadmin list users name | 查看所有用户名 Username |
rabbitmqadmin list users tags | 查看所有用户角色 |
rabbitmqadmin list vhosts | 查看所有虚拟主机 |
rabbitmqadmin list connections | 查看所有连接 |
rabbitmqadmin list exchanges | 查看所有路由 Exchange |
rabbitmqadmin list bindings | 查看所有路由与队列的关系绑定 Binding |
rabbitmqadmin list permissions | 查看所有角色的权限 Permission |
rabbitmqadmin list channels | 查看所有通道 Channel |
rabbitmqadmin list consumers | 查看所有消费者 Consumer |
rabbitmqadmin list queues | 查看所有消息队列 Queue |
rabbitmqadmin list nodes | 查看所有节点 Node |
rabbitmqadmin show overview | 概览 Overview |
rabbitmqadmin list bindings source destination_type destination properties_key | 查看所有路由与队列的关系绑定的详细信息 Binding |
rabbitmqadmin declare queue name=test durable=true | 定义一个队列queue,durable=true代表持久化打开。 |
rabbitmqadmin declare exchange name=my.fanout type=fanout | 定义一个Fanout路由 |
rabbitmqadmin declare exchange name=my.direct type=direct | 定义一个Direct路由 |
rabbitmqadmin declare exchange name=my.topic type=topic | 定义一个Topic路由 |
rabbitmqadmin declare binding source=my.fanout destination=test routing_key=first | 定义 binding |
rabbitmqadmin publish routing_key=test payload="hello world" | 发布一条消息 |
rabbitmqadmin publish routing_key=my.test exchange=my.topic payload="hello world" | 使用路由转发消息 |
rabbitmqadmin get queue=test requeue=true | 查看消息,不消费 |
rabbitmqadmin get queue=test requeue=false | 查看消息,并消费 |
rabbitmqadmin purge queue name=test | 删除队列中的所有消息 |
rabbitmqadmin delete queue name=hello | 删除消息队列 Queue |
rabbitmqadmin delete user name=test | 删除用户 User |
rabbitmqadmin delete exchange name=test | 删除路由器 Exchange |
rabbitmqadmin delete binding source='kk' destination_type=queue destination=test properties_key=test | 删除路由器与消息队列的关系绑定 Binding |
rabbitmqadmin -f raw_json list users | raw_json 格式化输出 |
rabbitmqadmin -f long list users | 格式化输出 |
rabbitmqadmin -f pretty_json list users | pretty_json 格式化输出 |
rabbitmqadmin -f kvp list users | 格式化输出 |
rabbitmqadmin -f tsv list users | 格式化输出 |
rabbitmqadmin -f table list users | table 格式化输出 |
rabbitmqadmin -f bash list users | bash 格式化输出 |
参考资料: