在企业物联网项目中经常会遇到一对多消息分发需求,即一个消息发布者对应多个消息订阅者的场景(1:N)。IoT企业物联网平台提供了消息路由表能力,可以轻松实现一对多场景的消息实时同步,达到秒级延迟性能。
比如工厂生产设备监控场景,一个机床设备定时上报运行数据,运维人员可以在坐在办公室电脑前用浏览器Web实时查看设备状态,也可以通过随身携带的手机上的App/小程序查看机床实时运行数据。
一对多消息同步操作步骤:
① 通过 API 建立 Topic 路由表
② 设备发布消息到 srcTopic
③ IoT平台根据路由表分发到 dstTopic
路由表实战
1.创建产品
我们以一个PLC工控机把实时采集的运行数据同步到多端应用为例,创建3个产品:PLC工控机,远程Web应用和远程App应用。如下图:
在PLC工控机产品的Topic类列表,创建自定义Topic,
/${productKey}/${deviceName}/user/data ,
权限设置为发布 ,如下图所示:
在远程App应用产品的Topic类列表,创建自定义Topic,
/${productKey}/${deviceName}/user/plc2App/data ,
权限设置为订阅。如下图所示:
在远程App应用产品的Topic类列表,创建自定义Topic,
/${productKey}/${deviceName}/user/plc2web/data ,
权限设置为订阅。如下图所示:
2.注册设备
然后,在三个产品下分别添加设备,如下图:
配置路由表
根据业务场景,我们梳理出路由表的定义,如下:
3.创建路由表
阿里云命令行工具Cloud Shell 创建路由表:
https://shell.aliyun.com/
也可以通过OpenAPI控制台的可视化界面发起CreateTopicRouteTable API调用,如下图:
https://help.aliyun.com/document_detail/69910.html
或者通过编程方式实现,Node.js示例如下:
4.查询路由表
配置完成后,在 Cloud Shell 查询路由表操作如下:
也可以通过OpenAPI控制台的可视化界面发起 QueryTopicRouteTable API调用,如下图:
https://help.aliyun.com/document_detail/69918.html
设备联机运行
PLC工控机M001设备,用来模拟设备上报数据到IoT平台,代码示例如下:
android002设备模拟,用来接收IoT平台路由表流转过来的数据,代码示例:
管理页面 web001逻辑和android002类似,仅需要修改对应的订阅 subTopic 即可。
三个设备端运行日志:
路由表日志
进入监控运维的日志服务页面,我们可以查看到PLC工控机上报数据到IoT物联网平台的日志,如下图:
选择远程应用web,我们可以查看到 web001 接收到IoT物联网平台转发的M001工控机上报的数据日志,如下图:
往期推荐