赞
踩
转自首夜盲毒预言家
参考资料:https://www.rabbitmq.com/parameters.html#policies
RabbitMQ 有很多可选参数(x-arguments),这些参数由客户端提供,决定是否使用各种可选特性,例如 TTL 和队列长度限制等。
由客户端设定这些参数导致对这些参数的修改需要修改代码、重部署项目、重新创建队列。同时,我们也没法给一组队列或者交换机设定相同的参数。引入 Policies 就是为了解决这些问题。
基本上所有的可选参数都有对应的 Policies。没在官网找到完整的 Policies 列表,但是管理插件中列出了很多 Policies:
目前有三种途径:
使用 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 各属性解释:
当一个队列/交换机被客户端设置了可选参数,同时又有生效的相关 Policy 时,哪个优先呢?
对于 DLX,官方文档指明是客户端设置的可选参数覆盖 Policy;对于消息TTL、队列长度限制,官方文档未给出说明。
TODO:整理所有的 Policy 及优先性。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。