协议转换
大约 2 分钟protocolmapper
概念说明
协议转换模块为第二层配置,用于配置协议的转换规则,输入输出示例以模版引擎加持进行动态替换
- 协议:选择协议记录模块中的协议
- 数据流向:设备到平台/平台到设备
- Topic规则:匹配的需要转换的Topic规则,支持通配符匹配
- 输入Topic示例:需要转换的实际Topic值,已替换为真实数据
- 输入Json示例:需要转换的实际Json值,已替换为真实数据
- 输出Topic模版:转换后的Topic模版,支持模版引擎
- 输出Json模版:转换后的Json模版,支持模版引擎
配置说明
用户可在线实时配置转换规则,支持多个转换规则同时生效,服务端调用平台提供的封装方法便可以进行数据的转换,之后再根据自定义业务逻辑进行转发。
- 用户可通过本模块对接各类协议、数据结构不一的平台,实现数据的转换和转发。
- 用户可将本平台定位为中转站,做不同平台之间的协议转发功能。
- 注意:目前功能已实现,但还未将各云平台的协议转换规则进行每个处理入库,未来会增加一键转换功能。
后端实现
用户在线配置好转换规则后,后端便可实时生效,通过转换规则匹配对应的topic,并且调用调试功能,进行数据格式解析转换,最后再根据转换后的数据进行转发。
核心代码如下,用户可自行拓展增强:
protocolMapperService.ifMatch(FlowTypes.IN, topic, payload, bean -> {
String beanTopic = bean.getTopic();
byte[] beanBody = bean.getBody().getBytes(StandardCharsets.UTF_8);
mqttServerTemplate.publishAll(beanTopic, beanBody);
executeServerRelayManager(context, beanTopic, beanBody);
});