一种基于MQTT的异步通信转同步通信方法技术

技术编号:39060147 阅读:9 留言:0更新日期:2023-10-12 19:53
本发明专利技术公开了一种基于MQTT的异步通信转同步通信方法,包括如下步骤:S110:上层业务发送请求,并等待,直到收到响应;S120:通过异步转同步设置进行转换,向上承接同步的请求/响应服务,向下遵循异步的订阅/发布机制;S130:底层基于MQTT的异步通信机制进行通信,其中,异步通信机制包括:MQTT

【技术实现步骤摘要】
一种基于MQTT的异步通信转同步通信方法


[0001]本专利技术属于计算机通讯的
,具体涉及一种基于MQTT的异步通信转同步通信方法。

技术介绍

[0002]MQTT(Message Queuing Telemetry Transport)是一种物联网连接协议,它基于“订阅/发布”的异步消息模型。对于需要较小代码占用空间和/或网络带宽资源非常宝贵的远程连接场景非常有用,是专为受限设备和低带宽、高延迟和不可靠网络而设计。
[0003]如专利申请202110909397.6公开了一种用于采集终端的基于MQTT协议的消息收发方法。模型包含消息发送,消息接收两大部分。其中消息框架消息发送分为同步消息发送、异步消息发送,同步消息发:首先调用消息发送接口,判断是否在回调函数中。如果不在回调函数中进行,则会进行MQTT主题格式化,初步的消息格式化,调用消息发送函数将报文消息发出,最后进行日志的打印记录。异步消息发送线程中调用异步发送接口,消息格式化以后将报文消息存入消息队列,然后周期性执行和保活线程从消息队列中周期性获取消息报文,然后发出。消息接收线程接收到消息后有回调函数的会调用回调函数处理,没有回调函数的存到消息队列,然后等待获取。
[0004]然而,这种应用方式具有一定的局限性,需要拓展MQTT的应用方式,以满足其它使用条件及环境的需要。

技术实现思路

[0005]为解决上述问题,本专利技术的首要目的在于提供一种基于MQTT的异步通信转同步通信方法,该方法将MQTT这种基于“订阅/发布”模型的异步通信方式,转换为“请求/响应”模型的同步通信方式,提高了通讯效率,降低了通讯功耗,拓展了应用方式。
[0006]为实现上述目的,本专利技术的技术方案如下。
[0007]一种基于MQTT的异步通信转同步通信方法,包括如下步骤:
[0008]S110:上层业务发送请求,并等待,直到收到响应;
[0009]对上层业务而言,无论下层是怎么实现的,这个过程是同步的。
[0010]S120:通过异步转同步设置进行转换,所述异步转同步设置向上承接同步的请求/响应服务,向下遵循异步的订阅/发布机制;具体包括如下步骤:
[0011]S1201,接收来自上层的同步请求;
[0012]S1202,将这个同步请求,通过异步的方式发送给向下处理异步订阅/发布机制的线程,在这个请求转换过程中,随机生成一个字符串序列,作为请求消息的nonce值,其作用是标识消息的唯一性;
[0013]S1202步骤中,对方收到请求后,不做处理即响应ACK消息,表示收到了请求。
[0014]S1203,向上承接同步请求/响应的服务线程进入阻塞状态,等待来自向下处理异步订阅/发布机制的线程的异步响应。
[0015]S1203步骤中,在这个过程中根据业务场景设置超时等待时间,如果在超时时间内没有收到异步响应结果,则向上报告响应超时;如果在超时时间内收到了异步响应结果,则对结果进行处理,并向上响应结果;
[0016]在这个过程中,对来自向下处理异步订阅/发布机制的线程的异步响应消息进行解析,对比请求消息的nonce和响应消息的nonce值是否相同,相同时才向上响应。
[0017]S130:底层基于MQTT的异步通信机制进行通信,
[0018]其中,异步通信机制包括:
[0019]MQTT

broker组件,是MQTT消息总线的服务器;
[0020]MQTT

client组件,通过与MQTT

broker建立连接,各个MQTT

client之间通过消息的订阅/发布实现异步通信,
[0021]具体步骤包括:
[0022]S1301步,MQTT

client

B是请求服务的提供方,在初始化时向MQTT

broker订阅topic/S消息;
[0023]S1302,MQTT

client

A是请求服务的消费方,在初始化时向MQTT

broker订阅topic/R消息,这个消息topic用来接收对topic/S的异步响应;
[0024]S1303,MQTT

client

A收到来自异步转同步设置的异步请求,立即响应ACK,这个ACK不是对处理结果的响应,只是对收到消息的响应;
[0025]S1304,MQTT

client

A发布topic/S消息,经MQTT

broker转发给MQTT

client

B;
[0026]S1305,MQTT

client

B收到请求消息后,进行业务逻辑的处理,在请求消息中,会收到携带的nonce值;
[0027]S1306,MQTT

client

B在业务逻辑处理完毕后,发布topic/R消息,在这个消息中,携带响应结果,将nonce值原样带回,经MQTT

broker转发给MQTT

client

A;
[0028]S1307,MQTT

client

A将收到的topic/R消息发送转换装置。
[0029]与现有技术相比,本专利技术的有益效果如下:
[0030]本专利技术将MQTT这种基于“订阅/发布”模型的异步通信方式,转换为“请求/响应”模型的同步通信方式,提高了通讯效率,降低了通讯功耗,拓展了应用方式。
[0031]将MQTT的通信方式进行了拓展,在此基础上能够满足用户更多的需要及应用环境要求。
附图说明
[0032]图1为本专利技术实施的基于MQTT的异步通信转同步通信的整体示意图。
[0033]图2为本专利技术实施的异步转同步内部机制示意图。
[0034]图3为本专利技术实施的基于MQTT的异步通信机制示意图。
具体实施方式
[0035]为了使本专利技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本专利技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本专利技术,并不用于限定本专利技术。
[0036]如图1所示,为本申请实施的基于MQTT的异步通信转同步通信方法的整体示意图,
如图所示,该方法具体包括S110

S130步骤。
[0037]S110:上层业务发送请求,并等待,直到收到响应。对上层业务而言,无论下层是怎么实现的,这个过程是同步的。
[0038]S120:通过异步转同步设置进行转换,所述异步转同步装置是一段软件代码模块,图2展示的即是这段本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于MQTT的异步通信转同步通信方法,其特征在于包括如下步骤:S110:上层业务发送请求,并等待,直到收到响应;S120:通过异步转同步设置进行转换,异步转同步装置是一段软件代码模块,该软件代码模块向上承接同步的请求/响应服务,向下遵循异步的订阅/发布机制;具体包括如下步骤:S1201,接收来自上层的同步请求;S1202,将这个同步请求,通过异步的方式发送给向下处理异步订阅/发布机制的线程,在这个请求转换过程中,随机生成一个字符串序列,作为请求消息的nonce值,其作用是标识消息的唯一性;S1203,向上承接同步请求/响应的服务线程进入阻塞状态,等待来自向下处理异步订阅/发布机制的线程的异步响应;S130:底层基于MQTT的异步通信机制进行通信,其中,异步通信机制包括:MQTT

broker组件,是MQTT消息总线的服务器;MQTT

client组件,通过与MQTT

broker建立连接,各个MQTT

client之间通过消息的订阅/发布实现异步通信,具体步骤包括:S1301步,MQTT

client

B是请求服务的提供方,在初始化时向MQTT

broker订阅topic/S消息;S1302,MQTT

client

A是请求服务的消费方,在初始化时向MQTT

broker订阅topic/R消息;S1303,MQTT

client

A收到来自异步转同步设置的异步请求,立即响应ACK;S1304,MQTT

client

A发布topic/S消息,经MQTT

broker转发给MQTT

clien...

【专利技术属性】
技术研发人员:吴军勇
申请(专利权)人:深圳市网力软件有限公司
类型:发明
国别省市:

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

1