EMQ 问答社区

emqx如何确定客户端确实接收到了信息

问题描述

emqx服务器能不能确定客户端确实收到了消息
如果能,它是如何确定的

环境信息

  • EMQ X 版本:企业版
  • 操作系统及版本:centos7
  • 其他
1赞

:+1: 很典型的疑问:tada:

对于 emqx 来说,投递到订阅者的 QoS 等级不同,处理是不一致的:

  • QoS0: 认为从 Socket 发送出去就认为成功了 (ps:没有等待 TCP 的 ACK)
  • QoS1和2:收到了 ACK 才认为成功(QoS1 是 PUBACK 报文,QoS2 是 PUBREC)

对于上层来说,有两个钩子事件可以用:

  • 消息已投递:message.delivery
  • 消息已确认应答:message.acked

这两个事件都可以通过规则引擎的拿到 规则引擎 | EMQ Docs

2赞