配置自定义策略

最近更新时间:2025-07-24 15:02:12

我的收藏

操作场景

在 TDMQ RabbitMQ 版中,创建 Queue 或 Exchange 时,除了必须设置的属性(如 Durable、Exclusive 等),还可以配置一些可选属性(如 x-message-ttl、x-expires、x-max-length 等)来实现不同的功能。
需要注意的是,Queue 或 Exchange 一旦创建成功,其属性参数就无法直接修改,除非删除后重新创建。
为了提升灵活性,RabbitMQ 提供了策略(Policy)机制。策略是一种特殊的运行时参数配置方式,支持动态调整某些属性。策略作用于 Vhost 级别,可以匹配一个或多个 Queue/Exchange,从而实现批量管理。通过策略,我们可以绕过 Queue/Exchange 属性无法直接修改的限制,大幅提升运维效率。
本文将介绍如何在控制台自定义策略的具体操作步骤。

使用限制

仅开源托管版集群类型支持配置自定义策略,Serverless 版集群暂不支持。

操作步骤

新建自定义策略

在新建集群时,若开启了镜像队列,在控制台策略页签下默认会有一条策略,可以删除,您也可以重新新建修改策略。
2. 在左侧导航栏选择集群管理 > Vhost,选择好地域后,单击目标 Vhost 的名称,进入基本信息页面。
3. 单击策略 > 新建策略,填写策略基本信息。
基本设置
参数
说明
当前 Vhost
表示正在给哪个 Vhost 创建镜像策略。
策略名称
填写策略名称,需符合命名规则:1-64个字符,只能包含数字、字母、“.”、“-”和“_”。
匹配模式
一个正则表达式,用来匹配相关的 Queue 或者 Exchange。常用匹配模式的正则表达式可参考:
.*:将匹配该 Vhost 下的所有 Queue 或者 Exchange。
^test.*:将匹配该 Vhost 下名称以“test”开头的所有 Queue 或者 Exchange。
.*test.*:将匹配该 Vhost 下名称包含“test”的所有 Queue 或者 Exchange。
.*test$:将匹配该 Vhost 下名称以“test”结尾的所有 Queue 或者 Exchange。
策略类型
选择 自定义策略
应用范围
用来指定当前 Policy 生效的范围
Exchanges And Queues:表示作用于与 Pattern 所匹配的所有 Queue 或者 Exchange。
Queues:表示作用于与 Pattern 所匹配的所有 Queue。
Exchanges:表示作用于与 Pattern 所匹配的所有 Exchange。
优先级
定义策略的优先级,范围0-255。如果有多个策略作用于同一个 Queue 或者 Exchange,那么优先级数字最大的那条策略才会生效。

策略定义
您可以自己选择所需要的策略定义字段,如下图。

目前云控制台支持的字段如下表。如需更多字段,请到 开源控制台 创建。
字段分类
字段名称
含义
数据类型限制
Queues (All Types)
Max Length
队列中允许的最大消息数。当队列中的消息数达到此限制时,根据Overflow Behaviour 设置,将会删除旧消息或拒绝新消息。
Number
Max Length Bytes
队列中允许的最大消息字节总数。当队列中的消息字节总数达到此限制时,根据 Overflow Behaviour 设置,将会删除旧消息或拒绝新消息。
Number
Overflow Behaviour
当队列达到最大长度或最大字节限制时的处理方式。合法值为:
drop-head:删除队列头部的旧消息。
reject-publish:拒绝新发布的消息。
String
Auto Expire
队列的自动过期时间。单位为毫秒。当队列在此时间内没有被访问(例如:没有发布消息、消费消息或检查队列状态),队列将被删除。
Number
Dead letter exchange
死信交换机。当消息因为超过 TTL、达到队列最大长度或被消费者拒绝而被删除时,这些消息将被发送到指定的死信交换机。
String
Dead letter routing key
死信路由键。当消息被发送到死信交换机时,可以使用此路由键进行路由。
String
Queues [Classic]
Message TTL
消息的生存时间(Time to Live)。单位为毫秒。这个值定义了消息在队列中可以存活的最长时间。当消息在队列中的存活时间超过这个值时,消息将被删除。如果消息被消费者消费(并确认)或者被重新发布到其他队列,那么这个计时器将被重置。
Number
Lazy mode
惰性模式。启用此模式后,RabbitMQ 会尽可能将队列中的消息存储到磁盘,以减少内存使用。
String ("lazy")
Queues [Quorum]
Max in memory length
每个消费者在确认之前允许消费的最大未确认消息数。
Number
Max in memory bytes
队列中允许的最大内存字节总数。当队列中的消息占用的内存字节总数达到此限制时,RabbitMQ 会尝试将超出限制的消息写入磁盘,以减少内存使用。请注意,这个设置对于启用了 Lazy mode 的队列可能不适用,因为在惰性模式下,RabbitMQ 默认会尽可能将消息存储到磁盘。
Number
Delivery limit
每个消费者在确认之前允许消费的最大未确认消息数。
Number
Exchanges
Alternate exchange
备用交换机。当消息无法被路由到任何队列(例如,没有匹配的路由键或队列)时,这些消息将被发送到指定的备用交换机。
String
4. 单击完成,完成策略创建,可以在策略列表看见已创建好的策略。

编辑策略

1. 在策略列表中,单击目标策略操作列的编辑
2. 在弹窗中,对策略信息进行编辑。
3. 单击完成,完成修改。

删除策略

1. 在策略列表中,找到需要删除的策略,单击操作列的删除
2. 在弹出的提示框中,单击删除,完成删除。