更新时间:2025-09-03 GMT+08:00

约束与限制

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

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

实例

表1 实例约束与限制

限制项

约束和限制

版本

当前服务端版本为3.8.35。

连接数

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

通道数

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

内存高水位阈值

<= 40%

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

磁盘高水位阈值

>= 5GB

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

cluster_partition_handling

pause_minority

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

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

rabbitmq_delayed_message_exchange

插件延迟时间存在1%左右的误差,可能提前或者推迟发送消息给消费者。

RabbitMQ插件

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

修改VPC/子网/可用区

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

存储空间

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

代理数量

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

是否支持ping命令

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

Vhost

表2 Vhost约束与限制

限制项

约束和限制

删除Vhost

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

Vhost名称

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

Exchange

表3 Exchange约束与限制

限制项

约束和限制

默认Exchange

RabbitMQ 3.x.x版本在创建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

RabbitMQ 3.x.x版本中,默认Exchange不支持删除。

Queue

表4 Queue约束与限制

限制项

约束和限制

绑定Queue

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

惰性队列

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

仲裁队列

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

单一活跃消费者

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

Queue名称

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

消息

表5 消息约束与限制

限制项

约束和限制

消息大小

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

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