本文介绍设备与物联网平台和物联网平台与服务器端的通信相关问题和解决方法。

设备重复收到消息,如何去重?

由于QoS=1的机制是保证最少收到一次消息,所以可能会出现重复收到消息的情况,但重复消息的消息ID是相同的。设备端可以根据消息ID去重。物联网平台也会尽量减少QoS=1时的消息重复发送。

物联网平台是否会保存消息?

消息一发送到Topic后,物联网平台就会立即将消息转发给订阅了该Topic的设备。

QoS=0时,物联网平台不保存消息。

QoS=1时,消息会保存7天。

服务器端如何获取设备消息?

服务器端可通过以下两种方式获取设备消息。

  • 服务端订阅:使用物联网平台的服务端订阅功能,订阅一个或多个消息类型。物联网平台根据您设置的订阅,将产品下所有设备的该类型消息流转至您的服务器。支持以下两种方式的服务端订阅。
    • 参见AMQP服务端订阅及相关文档,设置使用AMQP SDK接收物联网平台流转的设备消息。
    • 参见MNS服务端订阅,设置使用MNS SDK接收物联网平台流转到MNS队列的设备消息。
  • 云产品流转:使用规则引擎的云产品流转功能,通过数据流转规则将指定设备数据流转到消息服务(MNS)的主题或消息队列(RocketMQ)的队列中。服务器通过MNS或RocketMQ SDK接收消息。具体设置操作,请参见云产品流转概述

配置了MNS服务端订阅。但在控制台上发送消息,MNS的队列中并没有收到该消息,为什么?

在控制台发送的消息和调用云端API发送的消息均属于服务端发送的消息,不会流转到MNS队列,只有设备发出的消息(设备上报的消息、设备上下线的状态通知等)才会流转到MNS队列里。

如何判断MNS服务端收到的消息是来自哪个Topic?

发送到MNS队列中的消息格式:{ “messageid”:”12345”, “messagetype”:”status/upload”, “topic”:”null/topic”, “payload”: {data}, “timestamp”: 1469564576}中有Topic字段。您可根据Topic字段来判断。