问题1:连接被异常断开
原因:
MQTT 服务端在客户端发送 Publish 和 Subscribe 报文的时候进行权限验证,如果权限验证失败则会断开连接。
不同的客户端使用相同的 Client ID 连接 MQTT 服务,会被强制断开。
建议:客户端确保自己的 Client ID 全局唯一,不要重复连接,同时做好断线重连的逻辑。
问题2:之前订阅过的 Topic 消息还在继续推送
原因:
MQTT 协议中订阅关系是持久化的,因此如果不需要订阅某些 Topic,需要调用 unsubscribe 方法取消订阅关系。
问题3:为什么第一次开启消费端,消息接收有很大延迟
原因:
MQTT 服务端对于订阅关系的匹配处理是周期定时操作的,目前周期5分钟。因此第一次订阅某个新的 Parent Topic,则这个新的 Topic 从加载到收到第一条消息的延迟最多5分钟,之后的消息接收一般都是毫秒级延迟。
问题4:为什么有的 Topic 的消息能收到,有的收不到
原因:
每个 MQTT 客户端允许持有的订阅关系数量有限制,目前是30个。如果一个客户端试图订阅超过该限制数量的 Topic ,则会被丢弃,导致收不到这部分消息。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。