【转】RabbitMQ入门_14_Policies

转自首夜盲毒预言家

参考资料:https://www.rabbitmq.com/parameters.html#policies
 

A. Policies 的用途

RabbitMQ 有很多可选参数(x-arguments),这些参数由客户端提供,决定是否使用各种可选特性,例如 TTL 和队列长度限制等。

由客户端设定这些参数导致对这些参数的修改需要修改代码、重部署项目、重新创建队列。同时,我们也没法给一组队列或者交换机设定相同的参数。引入 Policies 就是为了解决这些问题。
 

B. Policies 的范围

基本上所有的可选参数都有对应的 Policies。没在官网找到完整的 Policies 列表,但是管理插件中列出了很多 Policies:

Policy

 

C. 定义 Policies 的方法

目前有三种途径:

  • 通过 rabbitmqctl 命令创建
  • 通过 RabbitMQ REST API
  • 通过管理插件



使用 rabbitmqctl 创建 Policies 命令格式如下:

    rabbitmqctl set_policy <policy name> "<pattern>" '<definition>' --priority <priority> --apply-to <queues/exchanges/both>

对应实例:

    rabbitmqctl set_policy TTL ".*" '{"message-ttl":60000}' --apply-to queues
    rabbitmqctl set_policy ha-fed "^hf\." '{"federation-upstream-set":"all","ha-mode":"all"}' --priority 1 --apply-to queues

Policy 各属性解释:

  • name:名字,可以使用任意 ASCII 字符,建议不要使用空格
  • pattern:用于匹配队列/交换机的正则表达式
  • definition:JSON格式的一组键值对,表示设置的属性,会被注入匹配队列/交换机
  • priority:优先级。一个队列/交换机只会有一个生效的 Policy,如果匹配多个 Policy,则优先级数值最大的 Policy 生效
  • apply-to:该 Policy 是针对队列,还是交换机,还是同时针对两者

 

D. Policies 与客户端设置的可选参数的优先性

当一个队列/交换机被客户端设置了可选参数,同时又有生效的相关 Policy 时,哪个优先呢?

对于 DLX,官方文档指明是客户端设置的可选参数覆盖 Policy;对于消息TTL、队列长度限制,官方文档未给出说明。

TODO:整理所有的 Policy 及优先性。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值