操作场景
在 TDMQ RabbitMQ 版中,创建 Queue 或 Exchange 时,除了必须设置的属性(如 Durable、Exclusive 等),还可以配置一些可选属性(如 x-message-ttl、x-expires、x-max-length 等)来实现不同的功能。
需要注意的是,Queue 或 Exchange 一旦创建成功,其属性参数就无法直接修改,除非删除后重新创建。
为了提升灵活性,RabbitMQ 提供了策略(Policy)机制。策略是一种特殊的运行时参数配置方式,支持动态调整某些属性。策略作用于 Vhost 级别,可以匹配一个或多个 Queue/Exchange,从而实现批量管理。通过策略,我们可以绕过 Queue/Exchange 属性无法直接修改的限制,大幅提升运维效率。
本文将介绍如何在控制台自定义策略的具体操作步骤。
使用限制
仅开源托管版集群类型支持配置自定义策略,Serverless 版集群暂不支持。
操作步骤
新建自定义策略
在新建集群时,若开启了镜像队列,在控制台策略页签下默认会有一条策略,可以删除,您也可以重新新建修改策略。
1. 登录 TDMQ RabbitMQ 版控制台。
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. 在弹出的提示框中,单击删除,完成删除。