rabbitmqctl

江南一点雨 ... 2021-12-03 22:28:52
  • 消息中间件
  • RabbitMQ
大约 4 分钟

[TOC]

关于 RabbitMQ 的管理,我们可以通过网页来进行,在松哥前面的文章中也和小伙伴们做了相关的介绍了:

除了通过 Web 管理页面来进行管理之外,我们也可以通过命令行来进行管理,之前松哥在RabbitMQ 中的 VirtualHost 该如何理解 (opens new window)一文中介绍过几个 RabbitMQ 管理命令。

也在另类玩法!使用 REST API 操作 RabbitMQ (opens new window)一文中介绍过一些相关的 REST API,在方便发送 HTTP 请求的地方调用这些 REST API,还是非常方便的。但是,在一些不方便发送 HTTP 请求的地方,这些 REST API 用着并不太方便,那么今天松哥就给大家再来介绍 RabbitMQ 的另一种玩法---rabbitmqadmin。

# 1. rabbitmqadmin

我们自己平时做练习,一般都会开启 RabbitMQ 的 Web 管理页面,然而在生产环境下,经常是没有 Web 管理页面的,只能通过 CLI 命令去管理 MQ。

其实呀,Web 管理页面虽然友好,但是很多时候没有 CLI 快捷,而且通过 CLI 命令行的操作,我们可以做更多的定制,例如将关键信息查出来后提供给集中的监控系统以触发报警。

直接操作 CLI 命令行有点麻烦,RabbitMQ 提供了 CLI 管理工具 rabbitmqadmin ,其实就是基于 RabbitMQ 的 HTTP API,用 Python 写的一个脚本。因为 REST API 手动写请求还是挺麻烦的,这些脚本刚好替我们简化了这个操作,让这个事情变得更加简单了。

使用 rabbitmqadmin 要先会安装它。

如果我们创建 RabbitMQ 容器的时候使用的是 rabbitmq:3-management 镜像,那么默认情况下,rabbitmqadmin 就是安装好的。

否则可能需要我们自己安装 rabbitmqadmin,安装方式很简单,

首先确认你的设备上安装了 Python,这是最基本的,因为 rabbitmqadmin 这个工具就是 Python 脚本。

然后开启 RabbitMQ 的 Web 管理页面,然后输入如下地址(我的管理页面度那口映射为 25672):

http://localhost:25672/cli/index.html
1

在打开的页面中就可以看到 rabbitmqadmin 的下载链接。将 rabbitmqadmin 下载下来后,然后赋予其可执行权限即可:

chmod +x rabbitmqadmin
1

下载后的 rabbitmqadmin 我们可以直接用记事本打开,里边其实就是一堆 Python 脚本。

这套流程操作下来还是挺麻烦的,所以,我建议大家直接使用 rabbitmq:3-management 镜像,一步到位。

# 2. rabbitmqadmin 的功能

  • 列出 exchanges, queues, bindings, vhosts, users, permissions, connections and channels。
  • 创建和删除 exchanges, queues, bindings, vhosts, users and permissions。
  • 发布和获取消息,以及消息详情。
  • 关闭连接和清空队列。
  • 导入导出配置。

接下来松哥就这些功能逐一和小伙伴们进行介绍。

# 3.列出各种信息

查看所有交换机:

rabbitmqadmin list exchanges
1

查看所有队列:

rabbitmqadmin list queues
1

查看所有 Binding:

rabbitmqadmin list bindings
1

查看所有虚拟主机:

rabbitmqadmin list vhosts
1

查看所有用户信息:

rabbitmqadmin list users
1

查看所有权限信息:

rabbitmqadmin list permissions
1

查看所有连接信息:

rabbitmqadmin list connections
1

查看所有通道信息:

rabbitmqadmin list channels
1

# 4. 一个完整的例子

接下来我们用 rabbitmqadmin 来写一个完整的消息收发例子看看。

首先创建一个名为 javaboy-exchange 的交换机:

rabbitmqadmin declare exchange name=javaboy-exchange durable=true auto_delete=false type=direct
1

这里各种参数都好理解,我就不多说了。

接下来创建一个名为 javaboy-queue 的队列:

rabbitmqadmin declare queue name=javaboy-queue durable=true auto_delete=false
1

接下来再创建一个 Binding,将交换机和消息队列绑定起来:

rabbitmqadmin declare binding source=javaboy-exchange destination=javaboy-queue routing_key=javaboy-routing
1

这里涉及到到三个概念:

  • source:源,其实就是指交换机。
  • destination:目标,其实就是指消息队列。
  • routing_key:这个就是路由的 key。

接下来发布一条消息:

rabbitmqadmin publish routing_key=javaboy-queue payload="hello javaboy"
1

这里参数都很简单,没啥好说的。

查看队列中的消息(只查看,不消费,看完之后消息还在):

rabbitmqadmin get queue=javaboy-queue
1

清空一个队列中的消息:

rabbitmqadmin purge queue name=javaboy-queue
1

# 5. 命令一览

表格字体有点小,大家在公众号【江南一点雨】后台回复 rabbitmqadmin 获取 Excel 文档链接。

# 6. 小结

好啦,今天就和小伙伴们简单介绍了一下 rabbitmqadmin,一个简单的 Python 脚本,感兴趣的小伙伴可以去试试哦~