计费相关

我已经购买了微消息队列 MQTT 版实例,并完成支付,为什么发消息后,还会继续扣钱呢?

微消息队列 MQTT 版预付费只限于微消息队列 MQTT 版所支持的协议,即 MQTT 的消息传输以及消息存储,不包含消息队列 RocketMQ 版的 Topic 资源占用费以及消息队列 RocketMQ 版所支持的其他协议(TCP)所产生的 API 调用费。

使用相关

问题 1:收到使用非法 Group ID 的短信报警

原因:

微消息队列 MQTT 版的接入流程中,客户端使用的 Group ID 是需要到控制台先申请再使用的。如果没有申请就使用,可能会导致连接断开,无法正常收发消息。

建议:

根据报警短信提示的非法 Group ID,登录微消息队列 MQTT 版控制台,进入 Group 管理,确认该 Group ID 是否已经创建。如果没有创建,您需要手动申请创建。Group ID 的命名必须符合规范才可以申请成功。

问题 2:收到离线消息存储数量超过系统限制的短信报警

原因:

微消息队列 MQTT 版对于每个实例中存储的离线消息数量是有限制的。具体的限制值,请参见使用限制中的相关说明。如果客户端订阅关系设置不当,产生了大量离线消息,超过了规格限制,则系统会从最早的消息清理,直到满足规格限制。

建议:

  • 根据报警短信提示的实例 ID,确认接入对应实例的客户端使用的是否为持久化 Session,以及是否使用了 QoS1 级别的订阅关系。
  • 确认上述客户端是否存在大量不在线的情况。
  • 确认是否还有消息发送给这些离线的客户端。
  • 确认如果属于错误使用,可以修改为 cleanSession 模式,并提工单请求清理错误的数据。
说明

持久化 Session 的订阅关系仅适用于客户端每次上线时 clientId 固定且上线后还需要获取离线期间没有收到的消息的场景。如果客户端 clientId 每次上线时都不固定,或者业务上不需要关注离线状态,请使用 cleanSession 模式,具体说明请见名词解释中的相关描述。

问题 3:连接被异常断开

原因:

  • 微消息队列 MQTT 版的服务端在客户端发送 Publish 和 Subscribe 报文的时候进行权限验证,如果权限验证失败则会断开连接。
  • 不同的客户端使用相同的 Client ID 连接微消息队列 MQTT 版服务,会被强制断开。

建议:

客户端确保自己的 Client ID 全局唯一,不要重复连接,同时做好断线重连的逻辑。

问题 4:之前订阅过的 Topic 消息还在继续推送

原因:

MQTT 协议中订阅关系是持久化的,因此如果不需要订阅某些 Topic,需要调用 unsubscribe 方法取消订阅关系。

问题 5:为什么有的 Topic 的消息能收到,有的收不到

原因:

每个微消息队列 MQTT 版客户端允许持有的订阅关系数量有限制,具体值请参见使用限制。如果一个客户端试图订阅超过该限制数量的 Topic ,则会被丢弃,导致收不到这部分消息。