一种基于Json-Path的MQTT消息体的自定义方法及装置制造方法及图纸

技术编号:38032376 阅读:8 留言:0更新日期:2023-06-30 10:58
本发明专利技术涉及MQTT技术领域,且公开了一种基于Json

【技术实现步骤摘要】
一种基于Json

Path的MQTT消息体的自定义方法及装置


[0001]本专利技术涉及MQTT
,具体为一种基于Json

Path的MQTT消息体的自定义方法、计算机可读存储介质及电子装置。

技术介绍

[0002]MQTT (Message Queue Telemetry Transport)是一种轻量级的基于代理的发布/订阅(publish/subscribe)的消息传输协议;MQTT 建立在TCP协议之上,对设备硬件要求低;同时 MQTT 协议简单(相比于HTTP协议,MQTT最小的头部只需2个字节),对网络带宽要求低,特别适合于嵌入式中。得益于这些优点,MQTT 通常被用于自动化数据采集终端、边缘网关、智能网关、物联网云平台之间的数据传输。
[0003]MQTT在使用时,使用方最为关注的是主题(Topic)和消息体(Payload)格式,一般来讲,接收方和发送方需要事先约定好主题和消息体格式,但是这种方式存在如下弊端:1.消息体的格式采用人为约定的方式,如需改动,发送方和接收方都要同时修改代码,协议的灵活性很差;2.接收方或发送方都需要通过写代码去解析消息体,遗憾的是,在工业网联网产品中,一般需要通过边缘网关或智能网关对接各个厂家或不同类型的设备,或者物联网云平台会对接多种边缘网关,因此在发送端或接受端都需要适配各种MQTT消息体,这样大大提高了代码设计的复杂度,降低了产品的灵活性;为了解决避免上述问题,一些物联网云平台(如阿里云),在设计时内置了MQTT主题生成机制算法和固定的消息体格式,对接方按照平台开放API对接即可。但是,这个方案,对于一些具有特殊需求的场景,仍然是无法满足的。
[0004]因此,需要一种能够让发送方或接收方自定义主题和消息体的方案,在提供该功能的平台上,能够让用户定义主题和消息体格式,平台智能解析MQTT消息体,并按照定义的消息体格式封装消息或解析消息,如此便可以大大提高MQTT的使用灵活性,提高产品的通用性。

技术实现思路

[0005](一)解决的技术问题针对现有技术的不足,本专利技术提供了一种基于Json

Path的MQTT消息体的自定义方法,以解决上述
技术介绍
中提出的问题。
[0006](二)技术方案为实现上述目的,本专利技术提供如下技术方案:一种基于Json

Path的MQTT消息体的自定义方法,包括可视化消息体定义模块、基于Json

Path的消息体解析模块和基于Json

Path的消息体封装模块,其特征在于:包括以下步骤:步骤一:用户以JSON的形式定义消息体的格式,并实时预览节点的数据类型,避免出错;
步骤二:用户将消息体的节点设置为变量或常量,变量需要和平台中的数据项进行关联,在推送消息时,按照约定的格式和关联的数据项封装消息,从而实现平台数据项的动态订阅;步骤三:使用Json

Path提取用户自定义消息体中的数据节点,并将其内容设置为如下格式:JsonPath#DataType#FieldType#value;步骤四:分离出消息体中的静态结构和动态结构;步骤五:上述消息解析和关键信息持久化后,封装消息变得就很简单了,在封装消息时,同时获取消息体的 fixStructure 和 elasticStructure 部分,并且基于业务逻辑分别进行处理,最后使用Josn

Path提供的 JSONPath.set(Object rootObject, String path, Object value)方法即可实现完整消息体的构建。
[0007]优选的,步骤三中的参数说明:JsonPath: 数据节点结构路径,使用Json

path提供的paths(...)方法经过特殊处理可以获取。
[0008]优选的,参数说明还包括:DataType:节点的数据类型,具有Int、Double、Bool、String四种类型。
[0009]优选的,参数说明还包括:FieldType:节点的字段类型,分为变量和常量。
[0010]优选的,参数说明还包括:value: 节点值,根据字段类型,该值具有不同的表现。
[0011]优选的,步骤四中为了便于封装消息体,同时为了提高程序运行的效率,需要将消息体的解析结果持久化,消息体中的数据节点具有常量和变量两种类型,在封装消息时,处理起来比较麻烦的是变量类型的数据节点,但是,往往这却是消息体的核心。
[0012]优选的,步骤三中解析的特定消息体分离出静态结构和动态结构是指消息体中的常量数据节点,此处暂且使用 fixStructure 表示。
[0013]本专利技术揭示了一种计算机可读存储介质,存储有至少一程序,所述至少一程序在被调用时执行并实现如前所述的基于Json

Path的MQTT消息体的自定义方法。
[0014]本专利技术揭示了一种电子装置,所述电子装置包含有如前所述的计算机可读存储介质。
[0015]与现有技术相比,本专利技术具备以下有益效果:1、本专利技术通过用户以JSON的形式定义消息体的格式,并可以实时预览节点的数据类型,避免出错,另外,用户可以将消息体的节点设置为变量或常量,变量需要和平台中的数据项进行关联,在推送消息时,按照约定的格式和关联的数据项封装消息,从而实现平台数据项的动态订阅,解决了MQTT的使用灵活性,提高产品的通用性。
[0016]2、本专利技术通过用户将消息体的节点设置为变量或常量,变量需要和平台中的数据项进行关联,在推送消息时,按照约定的格式和关联的数据项封装消息,从而实现平台数据项的动态订阅,并且使用Json

Path提取用户自定义消息体中的数据节点,并将其内容设置为如下格式JsonPath#DataType#FieldType#value,解决了代码设计复杂、产品灵活性低的问题。
附图说明
[0017]图1为本专利技术基于Json

Path的MQTT消息体的自定义方法的流程示意图;图2为本专利技术消息体格式的定义系统图;图3为本专利技术消息体解析过程系统图。
具体实施方式
[0018]请参阅图1

3,本专利技术提供一种基于Json

Path的MQTT消息体的自定义方法,包括可视化消息体定义模块、基于Json

Path的消息体解析模块和基于Json

Path的消息体封装模块,其特征在于:包括以下步骤:步骤一:用户以JSON的形式定义消息体的格式,并实时预览节点的数据类型,避免出错;步骤二:用户将消息体的节点设置为变量或常量,变量需要和平台中的数据项进行关联,在推送消息时,按照约定的格式和关联的数据项封装消息,从而实现平台数据项的动态订阅;步骤三:使用Json

Path提取用户自定义消息体中的数据节本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于Json

Path的MQTT消息体的自定义方法,包括可视化消息体定义模块、基于Json

Path的消息体解析模块和基于Json

Path的消息体封装模块,其特征在于:包括以下步骤:步骤一:用户以JSON的形式定义消息体的格式,并实时预览节点的数据类型;步骤二:用户将消息体的节点设置为变量或常量,变量需要和平台中的数据项进行关联,在推送消息时,按照约定的格式和关联的数据项封装消息,从而实现平台数据项的动态订阅;步骤三:使用Json

Path提取用户自定义消息体中的数据节点,并将其内容设置为如下格式:JsonPath#DataType#FieldType#value;步骤四:分离出消息体中的静态结构和动态结构;步骤五:上述消息解析和关键信息持久化后,在封装消息时,同时获取消息体的 fixStructure 和 elasticStructure 部分,并且基于业务逻辑分别进行处理,最后使用Josn

Path提供的 JSONPath.set(Object rootObject, String path, Object value)方法实现完整消息体的构建。2.根据权利要求1所述的一种基于Json

Path的MQTT消息体的自定义方法,其特征在于:步骤三中的参数说明:JsonPath: 数据节点结构路径,使用Json
...

【专利技术属性】
技术研发人员:黄磊磊汪澄王明
申请(专利权)人:苏州瀚码智能技术有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1