使用自定义Topic通信

重要

本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。

如果物模型功能不能满足您的业务需求,可以使用自定义Topic实现设备上下行通信。设备自定义Topic需您在物联网平台从产品维度进行添加和管理,产品的自定义Topic类会自动映射为该产品下所有设备的自定义Topic。物联网平台对自定义Topic通信的数据格式没有要求,需您自定义。本文介绍如何为产品自定义Topic类及自定义Topic的使用和通信说明。

背景信息

物联网平台Topic定义和通信说明,请参见什么是Topic使用Topic通信

应用场景

  • 服务端下发消息到设备端

    服务端调用Pub,可向指定的自定义Topic发布消息。设备通过订阅该Topic,接收来自服务端的消息。

  • 设备端发送消息到服务端

    设备端向自定义Topic发布消息,服务端可通过物联网平台的AMQP订阅或云产品流转功能,接收来自设备端的消息。

  • 设备与设备通信

    设备端向自定义Topic发布消息,可通过物联网平台的云产品流转或Topic消息路由,将消息转发到另一个设备的Topic。

添加自定义Topic类

  1. 登录物联网平台控制台

  2. 实例概览页签的全部环境下,找到对应的实例,单击实例卡片。

  3. 在左侧导航栏,选择设备管理 > 产品

  4. 产品页面,找到需要自定义Topic类的产品,并单击对应操作列中的查看

  5. 在产品详情页面,单击Topic类列表 > 自定义Topic > 定义Topic类

  6. 配置参数,单击确认

    参数

    描述

    设备操作权限

    设备对该Topic的操作权限,可设置为:

    • 发布:设备可以将消息通过该Topic发送到物联网平台。

    • 订阅:设备订阅该Topic后,当服务端应用发送消息到该Topic时,物联网平台会把消息发送到设备。

    • 发布和订阅:具备订阅和发布两个功能,即设备可以将消息通过该Topic发送到物联网平台,同时也可以通过该Topic接收消息。

    Topic类

    Topic格式必须以/进行分层,区分每个类目。类目命名只能包含字母、数字和下划线(_),每级类目不能为空。

    • 对于云网关产品,Topic类完全由用户自定义输入。支持使用通配符+#,支持使用${deviceName}通配DeviceName。

    • 对于非云网关产品:

      • 只有设备操作权限为订阅时,才可以使用通配符+#,以便设备实现批量订阅Topic。

      • 自定义Topic类前三个类目已固定为/${productKey}/${deviceName}/user/,需将Topic类填充完整。

    说明

    通配符使用方法,请参见本文下方的带通配符的自定义Topic说明

    是否开启代理订阅

    设备操作权限为订阅发布和订阅,可开启代理订阅。

    开启代理订阅后,设备与物联网平台建连时,物联网平台查询已开启代理订阅的Topic,帮助设备完成订阅。

    是否开启压缩或解压缩

    尊享型企业版实例下,可开启自定义Topic数据压缩或解压缩。数据压缩功能,请参见数据压缩

    描述

    可输入文字,描述该Topic类,用于区分不同Topic类的功能。

管理Topic类

您可在自定义Topic的Topic类列表中,找到对应自定义Topic类,执行以下操作。

编辑Topic类

  1. 单击Topic类对应操作列的编辑

  2. 定义Topic类对话框,修改描述设备操作权限Topic类

  3. 单击确认

设置是否开启代理订阅

找到操作权限订阅发布和订阅的Topic类,单击是否开启代理订阅开关image.pngimage.png

删除Topic类

警告

删除自定义Topic类后,与该自定义Topic相关的设备通信服务不可用、用户业务中断。请谨慎操作。

  1. 单击Topic类对应操作列的删除

  2. 单击确认

带通配符的自定义Topic说明

物联网平台支持自定义Topic类时,使用以下通配符。

说明

由于带通配符的Topic实质为一组Topic的集合,因此对于具备发布或订阅权限的Topic,都不支持直接使用携带通配符的Topic发送具体消息。

例如:带通配符的Topic不支持在设备的Topic列表页面执行发布消息操作,将消息发布到已订阅该Topic的设备。

通配符

描述

#

#只能出现在Topic的最后一个类目,代表本级及下级所有类目。

例如:自定义Topic/a1aycMA****/${deviceName}/user/#。设备device1订阅/a1aycMA****/device1/user/#,表示订阅以/a1aycMA****/device1/user/为开头的全部Topic,包含/a1aycMA****/device1/user/update/a1aycMA****/device1/user/update/error等Topic。

+

代表本级所有类目。

例如:自定义Topic/a1aycMA****/${deviceName}/user/+/error。设备device1订阅/a1aycMA****/device1/user/+/error,表示订阅/a1aycMA****/device1/user/get/error/a1aycMA****/device1/user/update/error等Topic。

自定义Topic通信示例

存储自定义Topic通信数据

自定义Topic中数据可流转到热数据存储空间进行存储。您可单击Topic列表上方的点击配置,跳转到数据服务>数据存储页面的热数据存储页签,配置热数据存储规则。具体内容,请参见配置自定义Topic数据存储

相关API

Topic管理

API

描述

CreateProductTopic

创建产品自定义Topic类。

UpdateProductTopic

修改产品自定义Topic类。

QueryProductTopic

查询产品自定义Topic类。

DeleteProductTopic

删除产品自定义Topic类。

CreateTopicRouteTable

添加Topic路由表。

QueryTopicRouteTable

查询Topic路由表。

QueryTopicReverseRouteTable

查询Topic反向路由表。

DeleteTopicRouteTable

删除Topic路由表。

Topic通信

API

描述

SubscribeTopic

为指定设备订阅Topic。

QueryDeviceSubTopic

查询设备已订阅的Topic列表。

UpdateTopicConfig

设置自定义Topic是否支持保留消息广播。

Pub

通过自定义Topic向指定设备发布消息,支持向指定产品下订阅了指定自定义Topic的在线设备发送广播消息。

BatchPub

通过自定义Topic向指定产品下的多个设备批量发送消息。

PubBroadcast

向指定产品所有设备,或向订阅了指定Topic的所有设备发布广播消息。

QueryMessageInfo

查询设备上下行消息的详情,包括消息的内容、消息的产生时间、发送消息的Topic等。

相关文档

物联网平台要求设备上报消息的数据格式要求为Alink JSON,如果设备的消息格式不是Alink JSON,必须使用消息解析将设备上报的自定义Topic数据解析为Alink JSON格式,通过自定义Topic下发设备的数据格式没有限制。消息解析的概念和使用步骤,请参见什么是消息解析

常见问题