设备使用MQTT v3.1协议,服务器使用MQTT v3.1.1协议会导致消息丢失么?

错误报告

环境

  • EMQX 版本:5.0.3
  • 操作系统版本:Linux

重现此问题的步骤

  1. 硬件设备使用的4G模块的MQTT,在平台上看协议是MQTT v3.1协议
  2. 服务器部署,以及后端程序注册的使用协议为MQTT v3.1.1协议
  3. 目前使用的消息质量为QoS 0,硬件设备目前只能设置为0。
    4、调试过程中发现,消息丢失的概率非常高,从主题监控中发现,流入6139条,流出2393条,消息丢弃3152条。消息丢失的非常多。目前不确定什么原因。不知道是否是因为这个协议不一致的问题。

预期行为

实际行为


功能请求

描述你需要的功能

为什么你需要这个功能


其他

跟协议版本没有关系,你可以查看一下 EMQX 的统计指标,看下主要都是由于什么原因丢弃的。



正常操作业务流程,有时候是成功,有时候是失败,失败就是服务器端没有收到消息。

从统计指标里面可以看到消息丢弃都是因为没有订阅者,你可以先看下你的订阅客户端是不是经常离线?

确定过了,设备是一直在线的,在订阅列表中也是一直在线,可能上一分钟还能正常收发,下一秒就有可能丢失,在下一秒可能又正常了

看到你主题监控里面的数据了,你追踪一下 dindo 这个主题吧,然后我们看下日志

charge.zip (1.7 KB)

这个是我之前追踪的日志,里面是有消息推送进来的,但是服务器端并没有收到,丢失了

我看到里面你的客户端有多次主动取消订阅的操作,你可以再确认一下客户端的行为。