售卖规格相关限制
限制项 | 具体限制说明 | 超限制后的行为 | 建议 |
集群 TPS 限制 | 按照购买页选择的规格进行严格限制。 | 超出 TPS 限制后,消息的生产/消费请求会被拒绝,并产生报错。 | |
集群客户端连接数量 | 按照购买页选择的规格进行严格限制。 | 客户端连接被拒绝,连接请求 (CONNECT) 报错。 | |
集群订阅数量 | 30 × 最大客户端连接数量,集群订阅数量包含共享订阅和自动订阅的数量 | 新的客户端订阅被拒绝,订阅请求 (SUBSCRIBE) 报错。 | |
单个客户端(client id)订阅 Topic Filter 数 | 30,集群订阅数量包含共享订阅和自动订阅的数量 | 新的客户端订阅被拒绝,订阅请求 (SUBSCRIBE) 报错。 | |
集群新建连接速率 | 集群最大在线客户端连接数量的 1/100。如集群的连接数上限为 10000,则每秒允许的新建客户端连接数为 100。最多每秒可以新建 100 个连接。 | 客户端连接被拒绝,连接请求 (CONNECT) 报错。 | |
数据面服务使用限制
为了保证服务端的稳定性和性能,同时考虑开源协议的标准和规范,腾讯云消息队列 MQTT 版进行了以下限制。如果某些限制项目和当前的使用场景冲突,可以根据表格中的建议进行相应的操作。
对于铂金版的集群,部分限制项可以通过工单服务和专家支持进行调整。
限制项分类 | 限制细项 | 具体限制说明 | 超限制后的行为 | 建议 |
资源命名 | 客户端 ID 和 客户端别名 | 单集群内唯一,如果不同客户端或设备使用同一个客户端 ID,则会出现互相抢占(taken over)导致下线的情况。 字符要求:仅支持数字 0~9、字母 a~z 或 A~Z 与 -_@ 三种特殊字符长度:128 字节 | 客户端连接被拒绝,连接请求 (CONNECT) 将被拒绝。 | |
| Topic Name | MQTT 协议中定义消息传输的通道和路径。 字符要求:任意 UTF-8 编码字符 长度:256 字节 | 达到限额后,客户端发送消息请求 (PUBLISH) 将被拒绝。 | |
| Topic 层级数 | 8,即Topic 名称最多支持使用 7 个 / 符号 | 达到限额后,客户端发送消息请求 (PUBLISH) 或者订阅请求 (SUBSCRIBE) 将被拒绝。 | |
消息属性和消息体 | 消息体大小 | 4MiB,仅计算 Payload 大小 | 发送消息时会出现消息大小超限额的报错。 | |
| Content Type 属性长度 | 256 字节,仅 MQTT 5.0 涉及 | 客户端连接(CONNECT)被拒绝或者发送消息请求 (PUBLISH) 报错。 | |
| User Property 属性长度 | 8 KB,仅 MQTT 5.0 涉及 | 超过限制的属性会被忽略 | |
| Correlation Data 属性长度 | 8 KB,仅 MQTT 5.0 涉及 | 超过限制的属性会被忽略 | |
| 消息除消息体外其他属性长度 | 16 KB | 超过限制的属性会被忽略 | |
| Topic Alias 最大数量 | 单个客户端最大 10 个 | 超出数量的客户端连接会被断开 | |
消息保存规则 | 暂未消费的消息保存时间(含保留消息) | 3 天 | 超出时间的消息会被删除。 | 铂金版的集群可以通过工单服务和专家支持进行调整。 |
| 单集群保留消息最大数量 | 10000 | 达到这个上限后,新到达的服务端的保留消息发送请求 (PUBLISH) 将被拒绝。 | |
消息收发 | 单集群服务端接收的最大 Unack 消息数(QoS >0) | 对于 QoS 为 1 和 2 的消息,单个客户端未确认的消息数最多为 8 | 服务端收到超过限额的消息会断开与客户端的连接。 | 铂金版的集群可以通过工单服务和专家支持进行调整。 |
| 单集群服务端发送的最大 Unack 消息数(QoS >0) | 对于 QoS 为 1 和 2 的消息,单个客户端未确认的消息数最多为 16。 | 达到限额后,服务端将停止发送消息到客户端。 | |
| HTTP 接口 | 达到限额后,调用会报错。 | | |
| 消息重试策略 | 对于 QoS 为 1 和 2 的消息,默认按照 120 秒的重试间隔无限重试。 | - | |
| 单集群排队消息数 | 无数量限制,但受消息保留时间限制 | - | |
| 单集群保留消息发送消费速率 | 100 条/秒 | 达到限额后,消息发送请求会报错。服务端会暂停发送消息到客户端 | |
客户端连接 | 客户端心跳的检查周期 (Keep Alive Interval) | 30-1200 秒,根据协议规定,若服务端在设置的 Keep Alive 1.5 倍时间内未收到任何消息,将判定当前连接失效。 | 如果客户端设置的时间超出这个时间默认也为 1200 秒,则认为是 1200 秒;如果客户端设置的时间低于 30 秒,则认为是 30 秒。 | - |
| 每个客户端 ID 新建连接数 | 每秒 1 次,每分钟 10 次 | 客户端连接被拒绝,连接请求 (CONNECT) 报错。 | - |
| HTTP 查询在线客户端的在线状态 | 超出限制后,接口调用失败 | ||
| WebSocket 连接时间 | 24小时 | 超出连接时间后自动断连 | - |
| 离线客户端状态保留时间 | 默认保留 1 天 | 超出保留时间的客户端状态会被删除。 | 铂金版的集群可以通过工单服务和专家支持进行调整 |
| 离线客户端状态数量限制 | 离线客户端与在线客户端共同占用集群客户端连接数量限制 | 当在线客户端 + 离线客户端数量大于集群客户端连接数量限制时,离线客户端状态将被清理; 当在线客户端数量大于集群客户端连接数量限制时,超出限制的客户端连接会被拒绝。 | |
证书 | 单集群服务端证书数量 | 3 | - | 铂金版的集群可以通过工单服务和专家支持进行调整。 |
| 单集群 CA 证书数量 | 32 | 超出后自动注册或手动注册失败 | |
| 每秒注册的客户端证书限额 | 15 | 超出后注册失败 | |
自动订阅 | 自动订阅规则数 | 10 | 无法创建新的自动订阅规则 | 铂金版的集群可以通过工单服务和专家支持进行调整。 |
| 单个自动订阅规则内订阅数量 | 20 | 规则内无法新增新的订阅规则,添加后无效 | |
共享订阅 | 单集群共享订阅组数量上限 | 20 | 达到限额后,客户端订阅消息请求 (SUBSCRIBE) 报错 | 铂金版的集群可以通过工单服务和专家支持进行调整。 |
| 单个共享订阅组中订阅表达式数量上限 | 10,即 $share/{ShareName}/{filter} 中 filter 的数量 | 达到限额后,客户端订阅消息请求 (SUBSCRIBE) 报错 | |
| 单个共享订阅 Group 订阅和取消订阅请求上限总和 TPS | 10 | 达到限额后,客户端订阅消息请求 (SUBSCRIBE) 和取消订阅请(UNSUBSCRIBE)求报错 | |
| 单个共享订阅组下的客户端数量 | 1024 | 达到限额后,客户端订阅消息请求 (SUBSCRIBE) 报错 | |
其他功能 | 单个客户端的传播属性数量 | 超出后会新增属性的请求会报失败错误,需要调用接口删除对应的属性后再次添加 | | |
| 单个集群的设备身份数量 | 超出后调用注册设备身份接口会报错 | |
MQTT 协议使用限制
当前 TDMQ MQTT 支持 V3.1.1 的全部特性,支持 5.0 协议的除以下的所有特性:
1. 暂不支持 AUTH 请求;
2. 暂不支持指定 Will Delay Interval;
3. 暂不支持 Server Redirection;
4. 当消息的 QoS = 2 时,在部分极端情况下,如网络抖动等,会出现消息重复的情况,必要时请做好消息的幂等处理 。