本文为您介绍微消息队列 MQTT 对某些具体指标的约束和规范,以便您在使用微消息队列 MQTT 时不要超过相应的限制值,以免程序出现异常。具体的限制项和限制值请参见下表。

如果您购买了企业铂金版的微消息队列 MQTT,则可按需定制部分指标(下表中已标出),咨询定制请提交工单

表 1. 使用限制说明
限制项 限制值 说明
Topic 长度 64 个字符 使用微消息队列 MQTT 收发消息时,Topic 长度不得超过该限制,否则会导致无法发送或者订阅。
Topic 和 Client ID 可用字符 仅限数字 0-9,字母 a-z 或 A-Z,和符号“-”、“_” Client ID 和微消息队列 MQTT 的 Topic 不允许使用“/”、“:”、“,”、“%”等其他非常规字符,否则可能导致无法连接和收发消息
Client ID 长度 64 个字符 使用微消息队列 MQTT 收发消息时,Client ID 长度不得超过该限制,否则会导致连接被断开。
消息大小 64 KB 字节 消息负载不得超过该限制,否则消息会被丢弃(企业铂金版可定制)。
消息保存时间 3 天 目前仅当使用 QoS1 持久化 Session 时才会保留离线消息,且最多保留 3 天,超过时间将自动滚动删除(企业铂金版可定制)。
用户消息收发 TPS 参考实例规格 预付费实例会根据购买的规格进行限流,超过规格后将不保证消息可靠到达。后付费实例不会限流,但会默认提供监控报警。请合理调整监控阈值。
用户连接数 参考实例规格 预付费实例会根据购买的规格进行限流,超过规格后将不保证连接稳定性。后付费实例不会限流,但会默认提供监控报警。请合理调整监控阈值。
用户订阅关系数 参考实例规格 预付费实例会根据购买的规格进行限流,超过规格后将不保证订阅关系完整。后付费实例不会限流,但会默认提供监控报警。请合理调整监控阈值。
单个客户端订阅 Topic 数量 30 个 使用微消息队列 MQTT 收发消息时,每个客户端最多允许同时订阅 30 个 Topic,超过该限制会导致无法新增新的订阅关系(企业铂金版可定制)。
QoS 和 cleanSession 目前不支持 QoS2 的持久 Session 使用微消息队列 MQTT 收发消息时,服务端目前不支持 QoS2 方式的持久化 Session 订阅。如果需要接收离线消息,请使用 QoS1 方式的持久化 Session 订阅。
Token 有效期 30 天 调用申请 Token 接口时,如果 ExpireTime 的取值大于 30 天,接口仍然调用成功返回 Token,无报错,但实际有效期即为 30 天。
消息顺序性 上行顺序 使用微消息队列 MQTT 收发消息时,目前只保证每个客户端发送消息的顺序性,如果消费消息需要顺序,需要使用消息队列 MQ TCP 方式接收消息。
离线消息可见时间 10 秒 服务端首次推送消息后必须要等待超时或者失败后才能确认该消息是否转化为离线消息,对应的延迟时间通常是 5 秒 ~ 10 秒。
离线消息存储数量 1,000,000 条(如果默认限制不满足,请提交工单请求处理) 服务端会限制每个实例存储的离线消息数量。超过该限制后,服务端会从最早的消息开始清理。因此,请合理使用持久化订阅模式,以免产生很多无用的离线消息。