使用自定义Topic通信
使用自定义Topic通信
重要:本文中含有需要您注意的重要提示信息,忽略该信息可能对您的业务造成影响,请务必仔细阅读。
如果物模型功能不能满足您的业务需求,可以使用自定义Topic实现设备上下行通信。设备自定义Topic需您在物联网平台从产品维度进行添加和管理,产品的自定义Topic类会自动映射为该产品下所有设备的自定义Topic。物联网平台对自定义Topic通信的数据格式没有要求,需您自定义。本文介绍如何为产品自定义Topic类及自定义Topic的使用和通信说明。
背景信息
物联网平台Topic定义和通信说明,请参见什么是Topic和使用Topic通信。
应用场景
-
服务端下发消息到设备端
服务端调用Pub,可向指定的自定义Topic发布消息。设备通过订阅该Topic,接收来自服务端的消息。
-
设备端发送消息到服务端
设备端向自定义Topic发布消息,服务端可通过物联网平台的AMQP订阅或云产品流转功能,接收来自设备端的消息。
-
设备与设备通信
设备端向自定义Topic发布消息,可通过物联网平台的云产品流转或Topic消息路由,将消息转发到另一个设备的Topic。
添加自定义Topic类
-
登录物联网平台控制台。
-
在实例概览页签的全部环境下,找到对应的实例,单击实例卡片。
-
在左侧导航栏,选择*设备管理* > *产品***。
-
在产品页面,找到需要自定义Topic类的产品,并单击对应操作列中的查看。
-
在产品详情页面,单击*Topic类列表* > *自定义Topic* > *定义Topic类***。
-
配置参数,单击确认。
参数 描述 参数 描述 设备操作权限 设备对该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类
- 单击Topic类对应操作列的编辑。
- 在定义Topic类对话框,修改描述、设备操作权限和Topic类。
- 单击确认。
设置是否开启代理订阅
找到操作权限为订阅或发布和订阅的Topic类,单击是否开启代理订阅开关或
。
删除Topic类
警告:删除自定义Topic类后,与该自定义Topic相关的设备通信服务不可用、用户业务中断。请谨慎操作。
- 单击Topic类对应操作列的删除。
- 单击确认。
带通配符的自定义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下发设备的数据格式没有限制。消息解析的概念和使用步骤,请参见什么是消息解析。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 全网最简单!3分钟用满血DeepSeek R1开发一款AI智能客服,零代码轻松接入微信、公众号、小程
· .NET 10 首个预览版发布,跨平台开发与性能全面提升
· 《HelloGitHub》第 107 期
· 全程使用 AI 从 0 到 1 写了个小工具
· 从文本到图像:SSE 如何助力 AI 内容实时呈现?(Typescript篇)