使用qos2,客户端on_message里面处理出问题或者出现意外错误,该收到的消息是否就丢失了?

环境信息

  • EMQX 版本:开源版
  • 操作系统及版本:windows
  • 其他

问题描述

使用qos2,客户端on_message里面处理出问题或者出现意外错误,该收到的消息是否就丢失了?
只能通过外部业务逻辑进行确保吗?

配置文件及日志

这个行为取决于你客户端 SDK 的实现。常见的两种方式是:

  1. SDK 在 MQTT 协议层完成 QoS2 的应答确认
    这种情况下,你客户端应用层收到 QoS2 消息时,对于 EMQX 而言传输已经成功完成。
    此时你应用层处理异常,那肯定出出现 “丢失”
  2. SDK 在应用层处理完毕后再确认
    这种情况你应用层处理失败,然后没有确认消息回传,EMQX 将会再确认超时后重传消息

好的,谢谢~~