您现在的位置是:亿华云 > 系统运维

另类玩法!使用 Rest API 操作 RabbitMQ

亿华云2025-10-03 06:31:49【系统运维】0人已围观

简介1. REST API 2. 开启 Web 管理页面 3. 实践 3.1 查看队列统计数据 3.2 创建队列 3.3 查看当前连接

1. REST API 2. 开启 Web 管理页面 3. 实践 3.1 查看队列统计数据 3.2 创建队列 3.3 查看当前连接信息 3.4 查看当前用户信息 3.5 创建一个用户 3.6 为新用户设置 vhost 4. 小结

RabbitMQ 还可以这么玩!

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

RabbitMQ 管理页面该如何使用

不过呢,如果我们安装了 rabbitmq_management 插件,类玩即安装了 RabbitMQ 中的法使 Web 管理客户端,那么我们就可以通过 REST API 来进行 RabbitMQ 的操作管理。

可能有小伙伴会问,类玩这有什么用?法使

如果我们的项目使用了如 Granglia 或者 Graphite 之类的图形工具,我们想抓取当前 RabbitMQ 上消息消费/累积的操作情况,就可以使用使用 REST API 去查询这些信息并将查询结果传输到新的类玩图形工具上,同时,法使由于 REST API 就是操作 HTTP 请求,所以支持的类玩客户端也是多样化,只要能发送 HTTP 请求,法使就能用,操作是不是特别方便?

1. REST API

可能有小伙伴还不懂什么是 REST API,这里就先简单科普下:

REST(Representational State Transfer)是一种 Web 软件架构风格,它是高防服务器一种风格,而不是标准,匹配或兼容这种架构风格的的网络服务称为 REST 服务。

REST 服务简洁并且有层次,它通常基于 HTTP、URI、XML 以及 HTML 这些现有的广泛流行的协议和标准。在 REST 中,资源是由 URI 来指定,对资源的增删改查操作可以通过 HTTP 协议提供的 GET、POST、PUT、DELETE 等方法实现。

使用 REST 可以更高效的利用缓存来提高响应速度,同时 REST 中的通信会话状态由客户端来维护,这可以让不同的服务器处理一系列请求中的不同请求,进而提高服务器的扩展性。

在前后端分离项目中,一个设计良好的 Web 软件架构必然要满足 REST 风格。云服务器

2. 开启 Web 管理页面

再来说说如何开启 Web 管理页面,整体上来说,我们有两种方式开启 Web 管理页面:

安装 RabbitMQ 的时候,直接选择 rabbitmq:3-management 镜像,安装命令如下:

docker run -d --rm --hostname my-rabbit --name some-rabbit -p 15672:15672 -p 5672:5672 rabbitmq:3-management 

这样安装好的 RabbitMQ 就可以直接使用 Web 管理页面了。

安装的时候就选择正常的普通镜像 rabbitmq:3,安装命令如下:

docker run -d --hostname my-rabbit --name some-rabbit2 -p 5673:5672 -p 25672:15672 rabbitmq:3 

这个安装好之后,需要我们进入到容器中,然后手动开启 Web 管理插件,命令如下:

docker exec -it some-rabbit2 /bin/bash rabbitmq-plugins enable rabbitmq_management 

第一条命令是进入到容器中,第二条命令开启 Web 管理插件,执行结果如下:

通过以上两种方式任意一种把 Web 管理页面打开,然后我们就可以使用 REST API 了。

3. 实践

接下来我们就来体验几个常见的 REST API 操作。

我们可以通过 CURL 工具来发送请求,也可以通过 POSTMAN 来发送请求,两者皆可,选择自己喜欢的即可。松哥这里两种方式都和大家演示一下。

3.1 查看队列统计数据

例如我们想查看虚拟主机 myvh 下 hello-queue 队列的数据统计,我们可以通过如下方式来查看:

curl -i -u javaboy:123 http://localhost:15672/api/queues/myvh/hello-queue 

-i 表示显示响应头信息。

最终执行结果如下:

可以看到,返回的信息有响应头,也有 JSON,亿华云计算不过返回的 JSON 没有格式化,看起来有点难受,如果返回的数据只有 JSON 而不包含响应头,那么我们可以使用 python 来完成数据的格式化,如下:

可以看到,此时返回的数据就格式化了。

当然我们也可以使用 POSTMAN 来发送这个请求,方式如下:

注意选择认证方式为 Basic Auth,同时设置正确的用户名密码。

POSTMAN 请求还是方便很多。

3.2 创建队列

在 /myvh 虚拟主机下创建一个名为 javaboy-queue 的队列,使用 CURL 请求方式如下:

curl -i -u javaboy:123 -XPUT -H "Content-Type:application/json" -d { "auto_delete":false,"durable":true} http://localhost:15672/api/queues/myvh/javaboy-queue 

注意请求方式是 PUT 请求,请求参数是 JSON 形式,JSON 里边有两个东西,一个 auto_delete 是说如果该队列没有任何消费者订阅的话,该队列是否会被自动删除(如果是一些临时队列,则该属性可以设置为 true);另外一个 durable 则是说队列是否持久化(持久化的队列,在 RabbitMQ 重启之后,队列依然存在),如果大家用 Java 代码创建过队列,这两个参数很好理解,因为我们用 Java 代码创建队列的时候这两个参数也会经常用到。

当然,我们也可以用 POSTMAN 来发送请求:

返回 201 Created 表示队列创建成功。

不过要注意在 Authorization 选项卡中设置用户名/密码:

3.3 查看当前连接信息

我们可以通过如下请求查看当前连接信息:

请求如下:

curl -i -u javaboy:123 http://localhost:15672/api/connections 

POSTMAN 查看方式如下:

3.4 查看当前用户信息

curl -i -u javaboy:123 http://localhost:15672/api/users 

POSTMAN 查看信息如下:

3.5 创建一个用户

创建一个名为 zhangsan,密码是 123 ,角色是 administrator 的用户。

CURL:

curl -i -u javaboy:123 -H "{ Content-Type:application/json}" -d { "password":"123","tags":"administrator"} -XPUT http://localhost:15672/api/users/zhangsan 

POSTMAN:

3.6 为新用户设置 vhost

将名为 zhangsan 的用户设置到名为 myvh 的 vhost 下:

curl -i -u javaboy:123 -H "{ Content-Type:application/json}" -d { "configure":".*","write":".*","read":".*"} -XPUT http://localhost:15672/api/permissions/myvh/zhangsan 

参数是具体的权限信息:

POSTMAN 请求方式如下:

好啦,松哥这里随便给大家举几个例子,其他 API 的用法,小伙伴们可以打开 RabbitMQ 的管理页面,点击下方的 HTTP API 按钮,里边有一个完整的文档:

4. 小结

感兴趣的小伙伴可以去试试哦~

本文转载自微信公众号「江南一点雨」,可以通过以下二维码关注。转载本文请联系江南一点雨公众号。

很赞哦!(3338)