更新时间:2024-10-29 GMT+08:00

约束与限制

本章节介绍分布式消息服务RabbitMQ产品功能的约束和限制。

实例

表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/子网/可用区。

存储空间

只支持扩大存储空间,不支持减小存储空间。

代理数量

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

代理规格

  • 支持扩容/缩容代理规格。
  • 单机实例和没有配置镜像/仲裁队列的集群实例在变更规格过程中会有分钟级业务中断,客户端需要支持自动重连,建议在业务低峰时进行变更。
  • 配置了镜像/仲裁队列的集群实例在变更规格过程中会有秒级业务中断,客户端需要支持自动重连,建议在业务低峰时进行变更。

Vhost

表2 Vhost约束与限制

限制项

约束和限制

删除Vhost

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

Exchange

表3 Exchange约束与限制

限制项

约束和限制

默认Exchange

RabbitMQ 3.8.35版本在创建Vhost后会创建7个默认Exchange:(AMQP default)、amq.direct、amq.fanout、amq.headers、amq.match、amq.rabbitmq.trace、amq.topic。

绑定Exchange

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

删除Exchange

RabbitMQ 3.8.35版本中,默认Exchange不支持删除。

Queue

表4 Queue约束与限制

限制项

约束和限制

绑定Queue

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

惰性队列

仅RabbitMQ 3.8.35版本支持惰性队列。

仲裁队列

仅RabbitMQ 3.8.35版本支持仲裁队列。

单一活跃消费者

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

消息

表5 消息约束与限制

限制项

约束和限制

消息大小

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

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