使用 REST API 操作 RabbitMQ

我们可以通过网页来对RabbitMQ进行管理:

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

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

1. 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 管理插件,执行结果如下:

img

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

3. 实践

可以通过 CURL 工具来发送请求,也可以通过 POSTMAN 来发送请求。

3.1 查看队列统计数据

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

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

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

最终执行结果如下:

img

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

img

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

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

img

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 来发送请求:

img

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

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

img

3.3 查看当前连接信息

通过如下请求查看当前连接信息:

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

img

POSTMAN 查看方式如下:

img

3.4 查看当前用户信息

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

img

POSTMAN 查看信息如下:

img

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:

img

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

参数是具体的权限信息:

img

POSTMAN 请求方式如下:

img

其他 API 的用法:可以打开 RabbitMQ 的管理页面,点击下方的 HTTP API 按钮,里边有一个完整的文档:

img

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

讓丄帝愛伱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值