设置 Policy 策略
在 RabbitMQ 中,可以使用 rabbitmqctl set_policy 命令来设置一个 Policy。命令格式如下:
1 | rabbitmqctl set_policy [-p vhost] [--priority priority] [--apply-to apply-to] {name} {pattern} {definition} |
其中的参数含义如下:
-
-p:指定虚拟机,如:/
-
--priority:指定优先级
-
--apply-to:指定该 Policy 的应用范围,如:同时应用到交换器和队列
-
name:指定 Policy 的名称
-
pattern:指定 Policy 匹配交换器或队列的正则表达式,如:^policy.+
-
definition:指定属性,如:message-ttl 等
示例:设置默认虚拟机(vhost)中所有以 “policy” 开头的队列的策略。其中,Policy 优先级为1,仅仅应用到队列,匹配模式为“^policy.+”,且消息的 ttl 为 3 秒。如下:
1 2 | C:\Users\Administrator> rabbitmqctl set_policy --apply-to queues --priority 1 myPolicy "^policy.+" "{\"message-ttl\":3000}" Setting policy "myPolicy" for pattern "^policy.+" to "{" message-ttl ":3000}" with priority "1" for vhost "/" ... |
列举 Policy 策略
在 RabbitMQ 中,可以使用 rabbitmqctl list_policies 命令列出默认虚拟机中所有的 Policy。命令格式:
1 | rabbitmqctl list_policies [-p vhost] |
示例
(1)列出默认虚拟机中所有的 Policy
1 2 3 4 5 | C:\Users\Administrator> rabbitmqctl list_policies Listing policies for vhost "/" ... vhost name pattern apply-to definition priority / myPolicy ^policy.+ queues { "message-ttl" :3000} 1 / test -policy ^policy.+ queues { "message-ttl" :3000} 1 |
(2)列出 vhost1 虚拟机中所有的 Policy
1 2 3 4 | C:\Users\Administrator> rabbitmqctl list_policies -p vhost1 Listing policies for vhost "vhost1" ... vhost name pattern apply-to definition priority vhost1 policyDemo ^policy.+ queues {"message-ttl":3000} 1 |
清除 Policy 策略
在 RabbitMQ 中,可以使用 rabbitmqctl clear_policy 命令清除指定的 Policy。命令格式:
1 | rabbitmqctl clear_policy [-p vhost] {name} |
其中,name 表示 Policy 名称。
示例:删除默认虚拟机中名为 myPolicy 的 Policy 策略。命令如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | # 列出默认虚拟机下所有 Policy C:\Users\Administrator> rabbitmqctl list_policies Listing policies for vhost "/" ... vhost name pattern apply-to definition priority / myPolicy ^policy.+ queues { "message-ttl" :3000} 1 / test -policy ^policy.+ queues { "message-ttl" :3000} 1 # 清理名为 myPolicy 的 Policy C:\Users\Administrator> rabbitmqctl clear_policy myPolicy Clearing policy "myPolicy" on vhost "/" ... # 列出默认虚拟机下所有 Policy C:\Users\Administrator> rabbitmqctl list_policies Listing policies for vhost "/" ... vhost name pattern apply-to definition priority / test -policy ^policy.+ queues { "message-ttl" :3000} 1 |
如果有两个或多个 Policy 都作用到同一个交换器或者队列上,且这些 Policy 的优先级都是一样的,则参数项最多的 Policy 优先。如果参数一样多,则最后添加的 Policy 优先。