当需要对设备数据进行复杂或精细化处理,且单个产品下所有设备或指定设备的消息量小于1,000 QPS时,可以使用云产品流转功能将物联网平台数据转发到轻量消息队列(原 MNS) SMQ(Simple Message Queue (formerly MNS))中,服务端再从消息服务主题中订阅消息,实现设备端与服务端之间高性能的消息闭环传输。本文以物模型数据上报Topic为例,介绍流转消息数据的完整流程。
工作原理
云产品流转可将同一产品所有设备或指定设备的指定Topic消息,实时转发到MNS队列已订阅的主题中。
在上图中:
数据源:支持的Topic类型消息,请参见数据格式(非云网关产品和设备)、自定义Topic(MQTT云网关)、消息转发Topic(GB/T 32960云网关)、消息转发Topic(JT/T 808云网关)。
数据目的:创建的MNS主题,用于接收设备数据,该主题的消息都会推送到订阅该主题的MNS队列中。
解析器脚本:配置通过数据流转函数
writeMns(destinationId, payload)
将Topic数据转发到MNS主题中。函数详细说明,请参见函数列表。
使用限制
物联网平台实例及所在地域支持将数据转发到消息服务(MNS)。支持的地域详细信息,请参见各地域功能说明。
新版和旧版云产品流转功能均支持将数据流转到消息服务(MNS)。旧版云产品流转使用示例,请参见数据转发到消息服务(旧版)。
物联网平台实例下设备消息转发的更多使用限制,请参见使用限制。
前提条件
已添加待转发的设备Topic数据源。例如:创建数据源DataSource,添加指定设备的物模型数据上报Topic。具体步骤,请参见添加待流转的数据源。
已创建消息服务主题,并在该主题下创建推送类型为HTTP或队列的订阅。消息服务使用方法,请参见轻量消息队列SMQ(原 MNS)文档。
重要企业版实例中,消息服务主题所在地域必须与该企业版实例所在地域一致。
已在您的业务服务器中使用MNS云端SDK监听已订阅MNS主题的MNS队列,才能实现消息服务MNS云端应用接收物联网平台设备消息。
轻量消息队列(原 MNS) SMQ(Simple Message Queue (formerly MNS))云端SDK调用方法,请参见SDK下载和使用中对应SDK的主题使用手册。
背景信息
设备端与服务端通过消息服务转发数据的流程,请参见数据转发到消息服务(MNS)。
物联网平台提供服务端订阅和云产品流转服务,均可将设备消息转发到消息服务MNS客户端进行消费。对比服务端订阅功能,云产品流转功能支持先指定设备Topic和加工处理设备数据再进行消息转发。您可以对比流转方案及应用场景,选择您业务需要的合适方案。具体内容,请参见数据流转方案对比。服务端订阅方式的配置方法,请参见使用MNS服务端订阅。
创建数据目的
登录物联网平台控制台。
在实例概览页签的全部环境下,找到对应的实例,单击实例卡片。
在左侧导航栏,选择 。
在云产品流转页面,单击右上角体验新版,进入新版功能页面。
说明如果您已执行过此操作,再次进入云产品流转页面,会直接进入新版功能页面。
- 单击数据目的页签,然后单击创建数据目的。
在创建数据目的对话框,输入数据目的名称,例如DataPurpose,按照以下参数说明,完成配置,然后单击确定。
参数
描述
选择操作
选择发送数据到消息服务(MNS)中。
地域
选择消息服务所在地域。
主题
选择接收数据的SMQ主题。
SMQ会将接收到的消息发送给该主题下的HTTP和队列类型的订阅。目前,物联网平台推送至SMQ主题的消息,仅可以通过HTTP或队列两种方式订阅。
您可以单击创建主题,跳转到轻量消息队列(原 MNS)控制台,创建SMQ主题以及订阅。请参见轻量消息队列(原 MNS) SMQ(Simple Message Queue (formerly MNS))文档。
角色
授权物联网平台将数据写入轻量消息队列(原 MNS)。
如您还未创建相关角色,单击创建RAM角色,跳转到RAM控制台,创建角色和授权策略,请参见创建RAM角色。
配置并启动解析器
- 创建解析器,例如DataParser。具体操作,请参见步骤一:创建解析器。
- 在解析器详情页面,关联数据源。
- 在配置向导的数据源下,单击关联数据源。
- 在弹出的对话框中,单击数据源下拉列表,选择已创建的数据源DataSource,单击确定。
- 在解析器详情页面,关联数据目的。
- 单击配置向导的数据目的,然后单击数据目的列表右上方的关联数据目的。
- 在弹出的对话框中,单击数据目的下拉列表,选择已创建的数据目的DataPurpose,单击确定。
- 在数据目的列表,查看并保存数据目的ID,例如为1000。后续解析脚本中,需使用此处的数据目的ID。
- 在解析器详情页面,单击解析器。
在脚本输入框,输入解析脚本。
解析脚本类似JavaScript语言,编辑脚本的语法参考JavaScript语法,详细的编辑方法,请参见脚本语法。
函数参数说明,请参见函数列表。
//通过payload函数,获取设备上报的消息内容,并按照JSON格式转换。 var data = payload("json"); //直接流转物模型上报数据。 writeMns(1000, data);
单击调试,根据页面提示,选择产品和设备,输入Topic和Payload数据,验证脚本可执行。
参数示例如下:
运行结果如下,表示脚本执行成功。
- 单击发布。
- 回到云产品流转页面的解析器页签,单击解析器DataParser对应的启动按钮,启动解析器。
后续操作
您可在物联网平台控制台对应实例下云端运行日志。
页面的云端运行日志页签,查看设备到云消息及云产品流转的运行日志。具体操作,请参见您可登录轻量消息队列(原 MNS)控制台,查看MNS主题推送到队列的消息。具体操作,请参见接收消息。
相关文档
设备接入物联网平台上报数据的操作指导,请参见设备接入引导。
您可在实例详情页面,查看消息转发TPS可用资源,确保设备消息能正常转发到轻量消息队列(原 MNS)进行消费。具体操作,请参见查看实例信息和运行数据。如果可用资源不足,可进行升配。具体内容,请参见升配。
查看轻量消息队列(原 MNS)主题监控项,了解接收消息的数量。具体操作,请参见查看主题监控项。
您可以使用日志管理功能将消息主题的消息操作日志推送到日志服务Log Service。当消息的消费确认出现异常时,您可以通过MessageId查询消息轨迹等信息,从而进行异常诊断。具体内容,请参见推送日志到Log Service和查看日志Log Service。