更新时间:2023-08-18 GMT+08:00
分享

消息下发概述

概述

消息下发不依赖产品模型,提供给设备的单向通知,具有消息缓存功能;云端消息下发中,平台会以异步方式(消息下发后无需等待设备侧回复响应)下发消息给设备;若设备不在线,则在设备在线后发送数据(支持配置,最长缓存时间24小时)。平台对每个设备默认只保存20条消息,超过20条后,后续的消息会替换下发最早的消息。同时,消息下发支持使用自定义topic的格式进行数据下发。

表1 消息下发Topic类别

消息下发Topic类别

描述

系统Topic

平台预先定义了各种设备和平台通信的Topic,具体Topic列表和功能说明可参考Topic定义

自定义Topic

用户可以自定义Topic,设备和平台间可以基于用户自定义的Topic进行通信。

自定义topic分类:

  • 在产品中定义需要使用的Topic,这类Topic有$oc/devices/{device_id}/user/前缀,消息上报或者消息下发时平台会校验Topic是否在产品中定义,未在产品中定义的Topic会被平台拒绝。使用方式可以参考链接使用自定义Topic进行通信的最佳实践。
  • 使用非$oc开头的自定义Topic,如/aircondition/data/up进行消息通信,这类Topic平台不校验Topic权限,根据MQTT协议定义的规则进行Topic的消息上下行通信。使用方式可以参考链接设备自定义Topic迁移上云

使用场景

  • 数据格式需要自定义,不依赖物模型。
  • 大量数据高频率下发。

使用限制

  • 单个消息内容不大于256KB。
  • 单个设备下发消息缓存数量为20个。
  • MQTT自定义Topic支持的最大长度为128字节。
  • 缓存时间支持配置,最长不超过24小时。

使用服务质量

  • 支持MQTT的服务质量等级为QoS 0、QoS 1,不支持QoS 2。
  • Topic的QoS为 0 时,消息下发不需要等设备回ACK,仅只下发一次; Topic的QoS为 1时,消息下发需要等设备回ACK。
  • 平台默认该设备订阅了QoS为0的系统Topic, 如果需要QoS为1的下行系统Topic,需要设备设置订阅QoS。
  • 设备订阅非$oc开头的自定义Topic, 如果需要平台支持该Topic的QoS为1, 需向平台提交工单联系申请。
  • 如果设备订阅Topic的QoS为1, 平台下发消息没有收到设备确认ACK时, 平台会重发消息, 默认每隔2s重发1次, 共重发3次;

    重发后设备依旧没有回确认响应且消息还在缓存时间内, 设备再次上线或订阅Topic时, 平台会再重发消息, 默认每隔10s重发1次, 共重发5次;

    同时每次重发也会触发每隔2s重发机制, 故订阅Topic的QoS为1时平台会重发消息, 设备可能会收到重复消息,建议设备要有去重机制。

分享:

    相关文档

    相关产品