更新时间:2025-10-15 GMT+08:00
分享

约束与限制

本章节介绍分布式消息服务RabbitMQ版产品功能的约束和限制,您在使用RabbitMQ实例时注意不要超过相应的约束和限制,以免程序出现异常。

如果因为您的实例配置超过相应的约束和限制而导致的任何不稳定情况,不在SLA承诺和赔偿范围内。

实例

表1 实例约束与限制(3.x.x版本)

限制项

约束和限制

版本

当前服务端版本为3.8.35和3.12.13。

连接数

RabbitMQ单机和集群实例,不同实例规格的连接数上限不一致,具体限制,请参考产品规格

通道数

单条连接可以建立的通道数<= 2047。

内存高水位阈值

<= 40%

内存使用率超过40%可能会触发内存高水位,内存高水位会导致生产者流程被阻塞。

磁盘高水位阈值

>= 5GB

磁盘剩余空间低于5GB会触发磁盘高水位,生产者流程被阻塞。

cluster_partition_handling

pause_minority

当集群发生网络分区时,代理会检查自己是否处于“少数派”(存储分区的代理数小于等于总代理数的一半称为少数派)。少数派中的代理将会自动关闭服务并定期检测网络状态,待分区恢复之后重新启动服务。如果未开启镜像队列,发生分区时少数派上的队列将无法生产消费。

此策略相当于放弃了可用性而选择了数据一致性。

RabbitMQ插件

RabbitMQ插件功能可用于测试和迁移业务等场景,不建议用于生产业务。因使用插件导致的可靠性问题,不在服务承诺的SLA范围内。

修改VPC/子网/可用区

实例创建后,不支持修改VPC/子网/可用区。

存储空间

  • 只支持扩大存储空间,不支持减小存储空间。
  • 扩容存储空间有次数限制,只能扩容20次。

代理数量

  • 集群实例只支持增加代理数量,不支持减少代理数量。
  • 增加代理数量过程中会有秒级业务中断,客户端需要支持自动重连,建议在业务低峰时进行变更。
  • 单机实例不支持修改代理数量。

代理规格

  • 支持扩容/缩容代理规格。
  • 单机实例在变更规格过程中,节点会重启,造成分钟级业务中断,客户端需要支持自动重连,建议在业务低峰时进行变更。
  • 没有配置镜像/仲裁队列的集群实例在变更规格过程中,节点会逐个重启,造成分钟级业务中断,客户端需要支持自动重连,建议在业务低峰时进行变更。
  • 配置了镜像/仲裁队列的集群实例在变更规格过程中,节点会逐个重启,造成秒级业务中断,客户端需要支持自动重连,建议在业务低峰时进行变更。
  • 集群实例在变更规格过程中,变更中的节点连接会切换至其余节点,导致其余节点存在过载风险(比如超过连接数、内存高水位等),建议您在实例规格范围内使用,具体实例规格请参考产品规格
  • Exchange、Queue和消息需要配置持久化,否则节点重启后,消息可能丢失。

是否支持ping命令

  • 单机实例:内网连接地址和公网连接地址都支持ping命令。
  • 集群实例:内网连接地址支持ping命令,公网连接地址不支持ping命令。
表2 实例约束与限制(AMQP-0-9-1版本)

限制项

约束和限制

版本

当前服务端版本为AMQP-0-9-1。

连接数

RabbitMQ单机和集群实例,不同实例规格的连接数上限不一致,具体限制,请参考产品规格

通道数

单条连接可以建立的通道数<= 2000。

修改VPC/子网/可用区

实例创建后,不支持修改VPC/子网/可用区。

存储空间

  • 只支持扩大存储空间,不支持减小存储空间。
  • 扩容存储空间有次数限制,只能扩容20次。

代理规格

  • 仅支持扩容代理规格。
  • 单机实例和集群实例在变更规格过程中会有秒级连接闪断,客户端需要支持自动重连,建议在业务低峰时进行变更。

是否支持ping命令

  • 单机实例:内网连接地址和公网连接地址都支持ping命令。
  • 集群实例:内网连接地址支持ping命令,公网连接地址不支持ping命令。

TPS

生产和消费消息共享TPS,不同产品规格对应不同的TPS,具体请参考产品规格

当TPS达到上限值,会导致Channel断开,报错信息为“denied for too many requests”。

单个连接的最大Channel数量

2000个。

实例的最大Channel数量

  • 2025年9月前:20000个。
  • 2025年9月及以后:仅限制单个连接的最大Channel数量。

消费超时时间

  • 2025年7月前:1分钟。
  • 2025年7月及以后:30分钟。

Vhost

表3 Vhost约束与限制(3.x.x版本)

限制项

约束和限制

删除Vhost

创建实例时自动生成的默认Vhost,不支持删除。

Vhost名称

  • Vhost名称以特殊字符开头,例如点号“.”,可能会导致监控数据无法显示。Vhost名称包含特殊字符,例如“%”、“|”、“/”,会导致Vhost名称与监控页面不一致,在监控页面中特殊字符会以“_”显示。例如:Vhost名称为Vhost.1%1|2_3/,此时监控中显示的Vhost名为“Vhost.1_1_2_3_”。
  • 在云监控中特殊字符“.”按5个字符计算长度。如果RabbitMQ 3.x.x版本实例的Vhost名称包含“.”,且经此规则计算后的总长度超过256个字符,可能会导致监控数据无法显示。
表4 Vhost约束与限制(AMQP-0-9-1版本)

限制项

约束和限制

删除Vhost

创建实例时自动生成的默认Vhost,不支持删除。

Vhost名称

Vhost名称包含特殊字符,例如“%”、“|”、“/”、“.”,会导致Vhost名称与监控页面不一致,在监控页面中特殊字符会以“_”显示。例如:Vhost名称为Vhost.1%1|2_3/,此时监控中显示的Vhost名为“Vhost_1_1_2_3_”。

Exchange

表5 Exchange约束与限制(3.x.x版本)

限制项

约束和限制

默认Exchange

创建Vhost后会自动生成7个默认Exchange:(AMQP default)、amq.direct、amq.fanout、amq.headers、amq.match、amq.rabbitmq.trace、amq.topic。

绑定Exchange

  • RabbitMQ 3.x.x版本中,名为“(AMQP default)”的Exchange不能绑定任何Exchange。
  • “Internal”为“是”的Exchange只能绑定Exchange,不能绑定Queue。

删除Exchange

默认Exchange不支持删除。

表6 Exchange约束与限制(AMQP-0-9-1版本)

限制项

约束和限制

绑定Exchange

Exchange不支持绑定Exchange,只支持绑定Queue。

Exchange名称

Exchange名称包含特殊字符,例如“%”、“|”、“/”、“.”,会导致Exchange名称与监控页面不一致,在监控页面中特殊字符会以“_”显示。例如:Exchange名称为Exchange.1%1|2_3/,此时监控中显示的Exchange名为“Exchange_1_1_2_3_”。

单个Exchange的最大Binding数量

256个。

Queue

表7 Queue约束与限制(3.x.x版本)

限制项

约束和限制

绑定Queue

  • 名为“(AMQP default)”的Exchange不能绑定任何Queue。
  • “Internal”为“是”的Exchange只能绑定Exchange,不能绑定Queue。

惰性队列

RabbitMQ 3.8.35及以上版本支持惰性队列。

仲裁队列

RabbitMQ 3.8.35及以上版本支持仲裁队列。

单一活跃消费者

RabbitMQ 3.8.35及以上版本支持单一活跃消费者特性。

Queue名称

  • Queue名称以特殊字符开头,例如点号“.”,可能会导致监控数据无法显示。Queue名称包含特殊字符,例如“%”、“|”、“/”,会导致Queue名称与监控页面不一致,在监控页面中特殊字符会以“_”显示。例如:Queue名称为Queue.1%1|2_3/,此时监控中显示的Queue名为“Queue.1_1_2_3_”。
  • 在云监控中特殊字符“.”按5个字符计算长度。如果RabbitMQ 3.x.x版本实例的Queue包含“.”,且经此规则计算后的总长度超过256个字符,可能会导致监控数据无法显示。
表8 Queue约束与限制(AMQP-0-9-1版本)

限制项

约束和限制

Queue名称

Queue名称包含特殊字符,例如“%”、“|”、“/”、“.”,会导致Queue名称与监控页面不一致,在监控页面中特殊字符会以“_”显示。例如:Queue名称为Queue.1%1|2_3/,此时监控中显示的Queue名为“Queue_1_1_2_3_”。

单个Queue的最大消费者数量

5000个。

消息

表9 消息约束与限制(3.x.x版本)

限制项

约束和限制

消息大小

单条消息的最大长度为50MB。

服务端限制了单条消息的最大长度,请勿发送大于此长度的消息,否则生产失败。

表10 消息约束与限制(AMQP-0-9-1版本)

限制项

约束和限制

消息大小

单条消息的最大长度为4MB。

服务端限制了单条消息的最大长度,请勿发送大于此长度的消息,否则生产失败。

消息保留时间

默认2天。

延时消息最大保留时间

7天。

消息最大重试次数

16次。

超过重试次数后,若未配置死信队列则丢弃消息,否则路由到死信队列中。

是否支持事务消息

不支持。

相关文档