上篇文章主要介绍了使用kettle平台实现文档的高效解析。通过上传文档和下载文档的方式,来对各种异构文档进行数据格式的统一。本篇文章进行介绍kettle平台的其他高级功能,即:mqtt与websocket的相互转换。
场景描述:
需求:物联网平台的数据处理。
大家知道,物联网平台的数据处理过程:硬件设备层——》数据收集层——》业务逻辑层——》展示层。
物联网平台的主要数据传输协议有mqtt,coap,http等,mqtt是最常见的一种。展示层一般采用websocket技术进行展示。
问题:
- 如何将mqtt请求的数据转换为websocket呢?
- 如何在转换过程中加入业务逻辑呢?
方案:
如果采用按照处理普通需求的方式,按照定制化逻辑进行开发,势必会导致大量的代码量,而且因为逻辑不通用,会导致一系列的问题。我就猜测有没有这样的一个中间件来解决这个问题呢?通过在互联网上一顿操作,愣是找不到任何资源。我就下决心完成开发这套中间件。
效果预览:
mqtt客户端:MQTTBox。
通过mqttBox向主题windows发布消息,如下图。
数据集成平台:
平台提供websocket接口,并在平台中设置mqtt的相关配置
websocket客户端在线测试:
调用websocket接口,平台开始监听mqtt数据,若有数据进入,则会通过websocket推送出来
原理简介:
-
通过“MQTT consumer”节点来连接mqtt服务器,当然连接服务器的配置也可以通过平台进行配置。
-
通过“Get records from stream”节点来进行流处理,对每一条数据进行定制化处理。
将以上两个转换文件进行组合,便可以实现对mqtt的监听,以及对流数据的处理。
- 平台原理:
通过将上述两个文件进行上传保存后,websocket服务接口通过执行这两个文件,将mqtt数据变化转换为websocket数据变化,并最终通过websocket通道进行数据输出。
总结:
平台通过mqtt与websocket的相互转换功能,非常巧妙的解决了物联网中的数据协议转换问题,极大的简化了开发工作量。当然这个功能不仅仅支持mqtt,消息中间件都支持(如:rabbitmqt,kafka等)。
若有什么疑问,可加qq893393953。