System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种MQTT通信代理的进程间通信方法技术_技高网

一种MQTT通信代理的进程间通信方法技术

技术编号:40842047 阅读:6 留言:0更新日期:2024-04-01 15:09
本申请涉及网络通信技术领域,具体涉及一种MQTT通信代理的进程间通信方法,该方法包括:代理进程集成MQTT客户端与MQTT服务器按MQTT协议进行通信;该代理进程与多个业务进程集成发布订阅模型的进程间通信库,以进行进程间通信;该代理进程以及该业务进程均运行在该MQTT客户端中;该代理进程订阅固定的代理主题,并以固定的业务主题向该业务进程发布进程间通信消息;该业务进程订阅固定的业务主题,并以固定的代理主题向该代理进程发布进程间通信消息;该代理进程与该业务进程为一对多进程间通信。上述方案采用固定主题,即使新增业务进程,也不会直接影响代理进程。

【技术实现步骤摘要】

本申请涉及网络通信,具体涉及一种mqtt通信代理的进程间通信方法。


技术介绍

1、mqtt(消息队列遥测传输)是iso标准(iso/iec prf 20922)下基于发布/订阅范式的消息协议,其是一个基于客户端-服务器的消息发布/订阅传输协议,每条消息均由主题和载荷组成。

2、目前,mqtt被广泛应用在车载领域中,而在车载领域中,每一个车辆相当一个客户端,目标车辆可通过传输网络(如无线通信网络)与服务器实现通信连接,并基于mqtt实现订阅主题和发布消息的任务,并接收到与订阅主题相匹配的消息;也就是说,多个不同设备上的客户端,可以同时以各自的客户端标识连接到同一个服务器上,客户端可以订阅主题和发布消息,并接收到服务器下发的与订阅主题相匹配的消息。在采用多进程架构的嵌入式系统中,代理进程以及业务进程都运行在汽车上的客户端中,为了使多个业务进程均能通过一个mqtt客户端来收发消息,就需要设定一个代理进程来负责mqtt客户端与mqtt服务器的连接,其他的业务进程与该代理进程通过进程间通信的方式,间接的收发mqtt通信消息。

3、但在上述方案中,由于每个业务进程都可能关联不同的通信主题,代理进程需要不停增加对新的主题的处理,这会直接影响代理进程的处理效率。


技术实现思路

1、有鉴于此,本申请实施例提供了一种mqtt通信代理的进程间通信方法,采用固定主题,即使新增业务进程,也不会直接影响代理进程。

2、第一方面,本申请提供了一种mqtt通信代理的进程间通信方法,所述方法包括:

3、代理进程集成mqtt客户端与mqtt服务器按mqtt协议进行通信;所述代理进程与多个业务进程集成发布订阅模型的进程间通信库,以进行进程间通信;所述代理进程以及所述业务进程均运行在所述mqtt客户端中;

4、所述代理进程订阅固定的代理主题,并以固定的业务主题向所述业务进程发布进程间通信消息;

5、所述业务进程订阅固定的业务主题,并以固定的代理主题向所述代理进程发布进程间通信消息;所述代理进程与所述业务进程为一对多进程间通信。

6、根据上述技术手段,本申请中的代理进程订阅固定的代理主题,业务进程订阅固定的业务主题,采用固定主题,即使新增业务进程,也不会直接影响代理进程;并且代理进程与业务进程的进程间通信属于一对多的通信,只要有业务进程需要收发mqtt通信消息,代理进程就会保持与mqtt服务器的连接,保证了通信连接稳定性。

7、结合第一方面,在一种实施方式中,所述进程间通信消息,包括消息头和消息体;

8、所述消息头,包括消息功能标识以及发布者标识;所述消息体根据所述消息功能标识的不同,由一个或多个整型数据和字符串数据按固定的顺序排列。

9、根据上述技术手段,本申请的进程间通信消息以结构化的数据格式,定义了多种消息,该进程间通信消息的发布实现了间接通过该代理进程收发mqtt通信消息。

10、结合第一方面,在一种实施方式中,所述代理进程和所述业务进程中均存储有mqtt的连接状态信息;

11、所述代理进程周期性发布连接状态的进程间通信消息;

12、所述业务进程在收到所述代理进程发布的连接状态后,在所述代理进程的连接状态与自身存储的连接状态不一致时,发布mqtt连接请求或mqtt断开请求的进程间通信消息;

13、所述代理进程在收到所述mqtt连接请求或mqtt断开请求后,根据消息发布方信息,设置或清除所述消息发布方信息对应的业务进程的位标识;

14、所述代理进程在所有业务进程均发起mqtt连接请求,或者在超过第一预设时间后,发起与所述mqtt服务器的通信连接;

15、所述代理进程在没有业务进程发起mqtt连接请求时,断开与所述mqtt服务器的连接。

16、根据上述技术手段,本申请中代理进程与业务进程在不同先后的启动顺序,或者进程崩溃后重启等条件下,均可以重新建立起进程间通信;并且,代理进程向业务进程发送周期性连接状态通知,使得两者进程死亡重启后,均可重新建立连接状态,代理进程在业务进程准备好后,再发起与mqtt服务器的连接,避免刚连接成功时接收到的离线消息无人处理的情况。

17、结合第一方面,在一种实施方式中,所述业务进程在mqtt已连接状态下,所述业务进程发布mqtt发布请求的进程间通信消息;

18、所述代理进程在收到所述mqtt发布请求后,向所述mqtt服务器发出所述mqtt发布请求,获取发布令牌token,并发布mqtt发布确认的进程间通信消息;

19、所述业务进程在收到所述mqtt发布确认后,根据所述发布令牌token,等待mqtt已发布的进程间通信消息;

20、所述代理进程在收到所述mqtt服务器发布的mqtt已发布消息后,取得已发布令牌token,并发布mqtt已发布的进程间通信消息;

21、所述业务进程在收到mqtt已发布的进程间通信消息后,根据已发布令牌token,确认此次发布完成;

22、所述业务进程在第二预设时间内,没有收到mqtt发布确认和mqtt已发布的通信消息,则认为此次发布失败。

23、根据上述技术手段,在本申请中,若多个业务进程在分别发布消息,代理进程通过发布确认、已发布消息和消息token的机制,可以使得多个业务进程各自确认消息的发布情况,从而提高消息发布准确性和效率。

24、结合第一方面,在一种实施方式中,所述代理进程和所述业务进程中均存储有mqtt订阅请求表,所述代理进程中还存储有mqtt已订阅主题表;所述代理进程在首次启动mqtt连接或重新启动mqtt连接前,清空所述代理进程中的mqtt已订阅主题表和mqtt订阅请求表。

25、结合第一方面,在一种实施方式中,所述业务进程在mqtt连接状态改变时,发布mqtt订阅请求的进程间通信消息;

26、所述代理进程在收到所述mqtt订阅请求后,如果待订阅的所述mqtt订阅请求的订阅主题不在所述mqtt已订阅主题表中,则将所述mqtt订阅请求的订阅主题追加到所述mqtt订阅请求表;

27、所述代理进程依次取出所述mqtt订阅请求表的订阅主题,并向mqtt服务器发出订阅请求,订阅成功后将所述订阅主题追加到所述mqtt已订阅主题表中。

28、结合第一方面,在一种实施方式中,在所述业务进程发布的mqtt订阅请求订阅成功后,所述mqtt服务器接收到所述订阅主题的新信息时,发布mqtt已接收消息;

29、所述代理进程在收到所述mqtt服务器发布的mqtt已接收消息后,发布mqtt已接收的进程间通信消息;

30、所述业务进程在收到所述mqtt已接收的进程间通信消息后,根据所述订阅主题,匹配所述业务进程所存储的mqtt订阅请求表,确认收到mqtt消息。

31、根据上述技术手段,在本申请中,多个业务进程在分别订阅主题时,代本文档来自技高网...

【技术保护点】

1.一种MQTT通信代理的进程间通信方法,其特征在于,所述方法包括:

2.根据权利要求1所述的方法,其特征在于,所述进程间通信消息,包括消息头和消息体;

3.根据权利要求1所述的方法,其特征在于,所述代理进程和所述业务进程中均存储有MQTT的连接状态信息;所述方法还包括:

4.根据权利要求3所述的方法,其特征在于,所述方法还包括:

5.根据权利要求1至3任一所述的方法,其特征在于,所述代理进程和所述业务进程中均存储有MQTT订阅请求表,所述代理进程中还存储有MQTT已订阅主题表;所述方法还包括:

6.根据权利要求5所述的方法,其特征在于,所述方法还包括:

7.根据权利要求6所述的方法,其特征在于,在所述业务进程发布的MQTT订阅请求订阅成功后,所述方法还包括:

8.一种MQTT通信代理的进程间通信系统,其特征在于,所述系统用于执行如权利要求1至7任一所述的一种MQTT通信代理的进程间通信方法;

9.一种计算机设备,其特征在于,所述计算机设备包括处理器和存储器,所述存储器中存储有至少一条指令,所述至少一条指令由所述处理器加载并执行以实现如权利要求1至7任一所述的一种MQTT通信代理的进程间通信方法。

10.一种计算机可读存储介质,其特征在于,所述存储介质中存储有至少一条指令,所述至少一条指令由处理器加载并执行以实现如权利要求1至7任一所述的一种MQTT通信代理的进程间通信方法。

...

【技术特征摘要】

1.一种mqtt通信代理的进程间通信方法,其特征在于,所述方法包括:

2.根据权利要求1所述的方法,其特征在于,所述进程间通信消息,包括消息头和消息体;

3.根据权利要求1所述的方法,其特征在于,所述代理进程和所述业务进程中均存储有mqtt的连接状态信息;所述方法还包括:

4.根据权利要求3所述的方法,其特征在于,所述方法还包括:

5.根据权利要求1至3任一所述的方法,其特征在于,所述代理进程和所述业务进程中均存储有mqtt订阅请求表,所述代理进程中还存储有mqtt已订阅主题表;所述方法还包括:

6.根据权利要求5所述的方法,其特征在于,所述方法还包括:

7.根据权利要求6...

【专利技术属性】
技术研发人员:鲍建
申请(专利权)人:镁佳武汉科技有限公司
类型:发明
国别省市:

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

1