约束与限制
本章节介绍分布式消息服务RabbitMQ版产品功能的约束和限制,您在使用RabbitMQ实例时注意不要超过相应的约束和限制,以免程序出现异常。
如果因为您的实例配置超过相应的约束和限制而导致的任何不稳定情况,不在SLA承诺和赔偿范围内。
实例
| 限制项 | 约束和限制 |
|---|---|
| 版本 | 当前服务端版本为3.8.35。 |
| 连接数 | RabbitMQ单机和集群实例,不同实例规格的连接数上限不一致,具体限制,请参考产品规格。 |
| 通道数 | 单条连接可以建立的通道数<= 2047。 |
| 内存高水位阈值 | <= 40% 内存使用率超过40%可能会触发内存高水位,内存高水位会导致生产者流程被阻塞。 |
| 磁盘高水位阈值 | >= 5GB 磁盘剩余空间低于5GB会触发磁盘高水位,生产者流程被阻塞。 |
| cluster_partition_handling | pause_minority 当集群发生网络分区时,代理会检查自己是否处于“少数派”(存储分区的代理数小于等于总代理数的一半称为少数派)。少数派中的代理将会自动关闭服务并定期检测网络状态,待分区恢复之后重新启动服务。如果未开启镜像队列,发生分区时少数派上的队列将无法生产消费。 此策略相当于放弃了可用性而选择了数据一致性。 |
| RabbitMQ插件 | RabbitMQ插件功能可用于测试和迁移业务等场景,不建议用于生产业务。因使用插件导致的可靠性问题,不在服务承诺的SLA范围内。 |
| 修改VPC/子网/可用区 | 实例创建后,不支持修改VPC/子网/可用区。 |
| 存储空间 | 只支持扩大存储空间,不支持减小存储空间。 |
| 代理数量 |
|
| 代理规格 |
|
| 是否支持ping命令 |
|
| 限制项 | 约束和限制 |
|---|---|
| 版本 | 当前服务端版本为AMQP-0-9-1。 |
| 连接数 | RabbitMQ单机和集群实例,不同实例规格的连接数上限不一致,具体限制,请参考产品规格。 |
| 通道数 | 单条连接可以建立的通道数<= 2000。 |
| 修改VPC/子网/可用区 | 实例创建后,不支持修改VPC/子网/可用区。 |
| 存储空间 | 只支持扩大存储空间,不支持减小存储空间。 |
| 代理规格 |
|
| 是否支持ping命令 |
|
| TPS | 生产和消费消息共享TPS,不同产品规格对应不同的TPS,具体请参考产品规格。 当TPS达到上限值,会导致Channel断开,报错信息为“denied for too many requests”。 |
| 单个连接的最大Channel数量 | 2000个。 |
| 实例的最大Channel数量 |
|
| 消费超时时间 |
|
Vhost
| 限制项 | 约束和限制 |
|---|---|
| 删除Vhost | 创建实例时自动生成的默认Vhost,不支持删除。 |
| Vhost名称 |
|
| 限制项 | 约束和限制 |
|---|---|
| 删除Vhost | 创建实例时自动生成的默认Vhost,不支持删除。 |
| Vhost名称 | Vhost名称包含特殊字符,例如“%”、“|”、“/”、“.”、“-”,会导致Vhost名称与监控页面不一致,在监控页面中特殊字符会以“_”显示。例如:Vhost名称为Vhost.1%1|2-3/,此时监控中显示的Vhost名为“Vhost_1_1_2_3_”。 |
Exchange
| 限制项 | 约束和限制 |
|---|---|
| 默认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。 |
| 删除Exchange | 默认Exchange不支持删除。 |
| 限制项 | 约束和限制 |
|---|---|
| 绑定Exchange | Exchange不支持绑定Exchange,只支持绑定Queue。 |
| Exchange名称 | Exchange名称包含特殊字符,例如“%”、“|”、“/”、“.”、“-”,会导致Exchange名称与监控页面不一致,在监控页面中特殊字符会以“_”显示。例如:Exchange名称为Exchange.1%1|2-3/,此时监控中显示的Exchange名为“Exchange_1_1_2_3_”。 |
| 单个Exchange的最大Binding数量 | 256个。 |
Queue
| 限制项 | 约束和限制 |
|---|---|
| 绑定Queue | 名为“(AMQP default)”的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_”。 |
| 单个Queue的最大消费者数量 | 5000个。 |
消息
| 限制项 | 约束和限制 |
|---|---|
| 消息大小 | 单条消息的最大长度为50MB。 服务端限制了单条消息的最大长度,请勿发送大于此长度的消息,否则生产失败。 |
| 限制项 | 约束和限制 |
|---|---|
| 消息大小 | 单条消息的最大长度为4MB。 服务端限制了单条消息的最大长度,请勿发送大于此长度的消息,否则生产失败。 |
| 消息保留时间 | 默认2天。 |
| 延时消息最大保留时间 | 7天。 |
| 消息最大重试次数 | 16次。 超过重试次数后,若未配置死信队列则丢弃消息,否则路由到死信队列中。 |
| 是否支持事务消息 | 不支持。 |