前面章节分别介绍了怎样使用 rabbitmq-management 插件和 rabbitmqctl 命令工具管理 Policy。下面将继续介绍怎样使用 HTTP API 实现 Policy 管理。
注意:通过 Postman 调用 RabbitMQ 提供的 HTTP API
使用 HTTP 的 PUT 方法访问接口,设置一个 Policy 到 RabbitMQ。创建 Policy 的主体部分格式如下:
{ "pattern": "^amq.", "definition": { "federation-upstream-set":"all" }, "priority":0, "apply-to": "all" }
示例:在 vhost2 虚拟机下面创建一个名为 myPolicy 的 Policy,该 Policy 优先级为 1,模式为“^policy.+”,仅仅应用到队列。如下图:
注意:调用需要授权哦!!依然使用 HTTP 基本方式授权,用户名和密码均为 guest。
使用 HTTP 的 GET 方法访问接口,获取默认虚拟主机下面所有的 Policy。如下图:
(1)获取所有虚拟机下面所有的 Policy,使用如下 URL 地址:
http://127.0.0.1:15672/api/policies
运行效果如下图:
(2)获取名为 vhost1 的虚拟机下面所有的 Policy,使用如下 URL 地址:
http://127.0.0.1:15672/api/policies/vhost1
运行效果如下图:
(3)获取名为 vhost1 的虚拟机下面名为 policyDemo 的 Policy,使用如下 URL 地址:
http://127.0.0.1:15672/api/policies/vhost1/policyDemo
运行效果如下图:
使用 HTTP 的 DELETE 方法访问接口,清理指定的 Policy。
示例:清理名为 vhost2 虚拟机下面名为 policyDemo 的 Policy。使用如下URL 地址:
http://127.0.0.1:15672/api/policies/vhost2/myPolicy
运行效果如下图:
如果有两个或多个 Policy 都作用到同一个交换器或者队列上,且这些 Policy 的优先级都是一样的,则参数项最多的 Policy 优先。如果参数一样多,则最后添加的 Policy 优先。