管理命令行工具
该 管理插件 附带一个命令行工具 **rabbitmqadmin**,它可以执行与基于 Web 的 UI 相同的一些操作,并且对于自动化任务可能更方便。请注意,rabbitmqadmin 只是一个专门的 HTTP 客户端;如果您正在考虑从您自己的程序调用 rabbitmqadmin,您可能需要考虑改为使用 HTTP API 客户端库。
请注意,rabbitmqadmin
不是 rabbitmqctl 或 rabbitmq-plugins 的替代品。HTTP API 故意不公开某些操作。
获取 rabbitmqadmin
rabbitmqadmin
可以从任何启用了管理插件的 RabbitMQ 节点下载。导航到 https://{hostname}:15672/cli/rabbitmqadmin
下载它。该工具需要安装受支持版本的 Python。
或者,可以从 GitHub 下载 rabbitmqadmin
。
入门指南
类 Unix 操作系统用户需要将 rabbitmqadmin
复制到 PATH
中的目录,例如 /usr/local/bin
。
Windows 用户需要确保 Python 在他们的 PATH
中,并以 python.exe rabbitmqadmin
的方式调用 rabbitmqadmin
。
调用 rabbitmqadmin --help
以获取使用说明。您可以
- 列出交换机、队列、绑定、虚拟主机、用户、权限、连接和通道
- 显示概述信息
- 声明和删除交换机、队列、绑定、虚拟主机、用户和权限
- 发布和获取消息
- 关闭连接和清除队列
- 导入和导出配置
对于其他任务,请参阅 rabbitmqctl 和 rabbitmq-plugins。
rabbitmqadmin 和 RabbitMQ HTTP API 兼容性
rabbitmqadmin
与管理插件同步开发,因此针对特定版本的 HTTP API。对于大多数操作,rabbitmqadmin
可以用于任何合理最新的 RabbitMQ 版本。但是,此规则有一些例外。
因此,rabbitmqadmin
需要与其目标 RabbitMQ 节点相同的版本系列。例如,rabbitmqadmin
3.7.x 只能用于 RabbitMQ 3.7.x 节点,3.6.x 用于 RabbitMQ 3.6.x 节点,依此类推。
bash 自动补全
rabbitmqadmin
支持 bash
中的制表符补全。要打印 bash 自动补全脚本,请调用 rabbitmqadmin --bash-completion
。这应该重定向到一个文件并 source
。
在基于 Debian 的系统上,将文件复制到 /etc/bash_completion.d
以使其在系统范围内可用
sudo sh -c 'rabbitmqadmin --bash-completion > /etc/bash_completion.d/rabbitmqadmin'
示例
获取交换机列表
rabbitmqadmin -V test list exchanges
# => +-------------+---------+-------+---------+-------------+
# => | name | durable | vhost | type | auto_delete |
# => +-------------+---------+-------+---------+-------------+
# => | | True | test | direct | False |
# => | amq.direct | True | test | direct | False |
# => | amq.fanout | True | test | fanout | False |
# => | amq.headers | True | test | headers | False |
# => | amq.match | True | test | headers | False |
# => | amq.topic | True | test | topic | False |
# => +-------------+---------+-------+---------+-------------+
获取队列列表,并指定一些列
rabbitmqadmin list queues vhost name node messages message_stats.publish_details.rate
# => +-------+----------------------------------+-------------------+----------+------------------------------------+
# => | vhost | name | node | messages | message_stats.publish_details.rate |
# => +-------+----------------------------------+-------------------+----------+------------------------------------+
# => | / | amq.gen-UELtxwb8OGJ9XHlHJq0Jug== | rabbit@smacmullen | 0 | 100.985821591 |
# => | / | test | rabbit@misstiny | 5052 | 100.985821591 |
# => +-------+----------------------------------+-------------------+----------+------------------------------------+
获取队列列表,并获取所有可获取的详细信息
rabbitmqadmin -f long -d 3 list queues
# => --------------------------------------------------------------------------------
# =>
# => vhost: /
# => name: amq.gen-UELtxwb8OGJ9XHlHJq0Jug==
# => auto_delete: False
# => backing_queue_status.avg_ack_egress_rate: 100.944672225
# => backing_queue_status.avg_ack_ingress_rate: 100.944672225
# => ...
以另一个用户的身份连接到另一个主机
rabbitmqadmin -H myserver -u simon -p simon list vhosts
# => +------+
# => | name |
# => +------+
# => | / |
# => +------+
声明交换机
rabbitmqadmin declare exchange name=my-new-exchange type=fanout
# => exchange declared
声明队列,并使用可选参数
rabbitmqadmin declare queue name=my-new-queue durable=false
# => queue declared
发布消息
rabbitmqadmin publish exchange=amq.default routing_key=test payload="hello, world"
# => Message published
并取回它
rabbitmqadmin get queue=test ackmode=ack_requeue_false
# => +-------------+----------+---------------+--------------+------------------+-------------+
# => | routing_key | exchange | message_count | payload | payload_encoding | redelivered |
# => +-------------+----------+---------------+--------------+------------------+-------------+
# => | test | | 0 | hello, world | string | False |
# => +-------------+----------+---------------+--------------+------------------+-------------+
导出配置(定义)
rabbitmqadmin export rabbit.definitions.json
# => Exported configuration for localhost to "rabbit.config"
导入配置(定义),静默模式
rabbitmqadmin -q import rabbit.definitions.json
关闭所有连接
rabbitmqadmin -f tsv -q list connections name | while read conn ; do rabbitmqadmin -q close connection name="${conn}" ; done