@[toc]
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. 小结
感兴趣的小伙伴能够去试试哦~
发表回复