获取离线MQTT消息

更新时间:

为了简化离线消息获取机制,云消息队列 MQTT 版系统在客户端成功建立连接并通过权限校验后,会自动加载离线消息并下发到客户端。

注意事项

  • 客户端建立连接后,需要通过权限校验才能自动加载离线消息。例如,若您使用的是Token验证的方式,则需要完成Token上传并通过校验后才会收到离线消息。
  • 离线消息生成需要一定的时间,因为推送的消息需要等待客户端的ack超时才会被判成离线消息。所以,如果客户端闪断重连,不一定马上可以获取到刚刚的离线消息。延迟时间一般在5秒~10秒左右。
  • 如果您的离线消息过多,即大于30条,云消息队列 MQTT 版系统会分批(5秒一次,每次30条)下发离线消息。
说明 对于部分老用户来说,有了自动加载机制,可不再使用原来的主动拉取的方式获取离线消息,但继续保留也无影响。

设置方法

您可以在消费端通过设置QoScleanSession两个参数来决定客户端是否需要获取离线消息。

表 1. QoS和cleanSession的组合关系

QoS级别

cleanSession=true

cleanSession=false

QoS0

无离线消息,在线消息只尝试推一次。

有离线消息,在线消息只尝试推一次。

QoS1

无离线消息,在线消息保证可达。

有离线消息,所有消息保证可达。

QoS2

无离线消息,在线消息保证可达且只接收一次。

暂不支持。

QoScleanSession参数的详细说明,请参见名词解释