一种基于消息中间件的业务消息处理方法和装置制造方法及图纸

技术编号:37416429 阅读:14 留言:0更新日期:2023-04-30 09:40
本发明专利技术公开了一种基于消息中间件的业务消息处理方法和装置,涉及计算机技术领域。该方法的一具体实施方式包括:在应用程序以单副本模式运行时,通过主节点应用程序从消息中间件中获取多个业务消息进行业务处理,并构建处理完成的业务消息的数据状态;将数据状态以事务的形式发送至消息中间件存储;若主节点应用程序出现故障,启动备用节点应用程序,并获取数据状态以确定第一标注位置,备用节点应用程序重新获取业务消息执行业务处理,并在备用节点应用程序中重新构建数据状态,并将第一标注位置之后的处理完成的业务消息对应的数据状态发送至消息中间件中进行存储。该实施方式保证了不重不丢地处理业务消息,提高了业务消息处理的精确率和效率。处理的精确率和效率。处理的精确率和效率。

【技术实现步骤摘要】
一种基于消息中间件的业务消息处理方法和装置


[0001]本专利技术涉及计算机
,尤其涉及一种基于消息中间件的业务消息处理方法和装置。

技术介绍

[0002]利用应用程序进行业务消息处理时,为保障业务消息的处理效率,通常会配置备用节点应用程序,在当前节点应用程序出现故障时,执行高可用切换,切换后由备用节点应用程序执行业务处理。
[0003]相关技术中由于应用程序在处理每条业务消息时,都会构建并维持一个数据状态,一旦当前节点应用程序崩溃,备用节点应用程序需要从头开始处理并重新构建数据状态,但由于应用程序在构建数据状态的同时,还需要向下游发送消息,在从头重新开始处理时,本地存储的数据状态重新构建了,但是向下游发送的消息也会重复。如何在发生高可用切换时,重建并维护数据状态,不重不丢地处理业务消息。

技术实现思路

[0004]有鉴于此,本专利技术实施例提供一种基于消息中间件的业务消息处理方法和装置,能够在主节点应用程序出现故障时,启动备用节点应用程序,快速重建数据状态,且并不存储重复数据,保证了不重不丢地处理业务消息,提高了业务消息处理的精确率和效率,提升了用户体验。
[0005]为实现上述目的,根据本专利技术实施例的一个方面,提供了一种基于消息中间件的业务消息处理方法,应用于执行业务消息处理的有状态应用程序;方法包括:在应用程序以单副本模式运行时,通过主节点应用程序从消息中间件中获取多个业务消息,根据业务消息的业务类型进行业务处理,并构建处理完成的业务消息的数据状态;其中,数据状态指示了处理完成的业务消息对应的第一标注位置和历史处理结果;将处理完成的业务消息对应的数据状态,以事务的形式发送至消息中间件中进行存储;若主节点应用程序出现故障,启动备用节点应用程序,并利用备用节点应用程序获取处理完成的业务消息对应的数据状态,以确定第一标注位置,备用节点应用程序重新获取业务消息,执行业务处理,并在备用节点应用程序中重新构建数据状态,并将第一标注位置之后的处理完成的业务消息对应的数据状态发送至消息中间件中进行存储。
[0006]进一步地,若应用程序以多副本模式运行,在主节点应用程序从消息中间件中获取多个业务消息的步骤之后,方法还包括:确定多个业务消息组成的业务消息队列中第一个业务消息对应的第二标注位置,根据业务消息的类型进行业务处理,将业务处理结果写入消息中间件,并以异步方式构建处理完成的业务消息的数据状态;对第一标注位置和第二标注位置进行广播。
[0007]进一步地,若应用程序以多副本模式运行,方法还包括:在主节点应用程序执行业务处理时,其余备用节点应用程序分别执行相应的业务处理,并获取主节点应用程序广播的第一标注位置和第二标注位置,以并控制备用节点应用程序的处理进度不超过主节点应用程序的处理进度。
[0008]进一步地,第一标注位置和第二标注位置以异步的形式进行广播;方法还包括:根据处理完成的业务消息所对应的数量和/或处理时长,确定广播的频率。
[0009]进一步地,控制备用节点应用程序的处理进度不超过主节点应用程序的处理进度的步骤,包括:根据广播指示的第一标记位置,全部备用节点应用程序分别从消息中间件中获取业务消息进行业务处理,构建处理完成的业务消息的数据状态,并确保处理完成的业务消息的标记位置不超过广播指示的第一标记位置;其中,备用节点应用程序构建的数据状态只进行本地存储。
[0010]进一步地,方法还包括:若主节点应用程序出现故障,通过ZooKeeper框架从其余备用节点应用程序中选举出目标节点应用程序;目标节点应用程序向消息中间件写入指示了目标节点应用程序编号的目标消息;目标节点应用程序从消息中间件中获取第二标注位置之后的业务消息,并对业务消息进行处理,直至获取到目标消息,以确定故障发生时,处理完成的业务消息的数据状态。
[0011]进一步地,设置业务消息批量获取数量阈值;从消息中间件中获取业务消息的步骤包括:根据业务消息批量获取数量阈值,从消息中间件中获取相应的业务消息。
[0012]根据本专利技术实施例的又一个方面,提供了一种基于消息中间件的业务消息处理装置,设置于执行业务消息处理的有状态应用程序;装置包括:处理模块,在应用程序以单副本模式运行时,用于通过主节点应用程序从消息中间件中获取多个业务消息,根据业务消息的业务类型进行业务处理,并构建处理完成的业务消息的数据状态;其中,数据状态指示了处理完成的业务消息对应的第一标注位置和历史处理结果;存储模块,用于将处理完成的业务消息对应的数据状态,以事务的形式发送至消息中间件中进行存储;切换模块,若主节点应用程序出现故障,用于启动备用节点应用程序,并利用备用节点应用程序获取处理完成的业务消息对应的数据状态,以确定第一标注位置,备用节点应用程序重新获取业务消息,执行业务处理,并在备用节点应用程序中重新构建数据状态,并将第一标注位置之后的处理完成的业务消息对应的数据状态发送至消息中间件中进行存储。
[0013]进一步地,若应用程序以多副本模式运行,处理模块用于:通过主节点应用程序从消息中间件中获取多个业务消息,确定多个业务消息组成的业务消息队列中第一个业务消息对应的第二标注位置,根据业务消息的类型进行业务处理;
存储模块,用于将业务处理结果写入消息中间件,并以异步方式构建处理完成的业务消息的数据状态;对第一标注位置和第二标注位置进行广播。
[0014]进一步地,装置还包括控制模块,还用于:在主节点应用程序执行业务处理时,由其余备用节点应用程序分别执行相应的业务处理,并获取主节点应用程序广播的第一标注位置和第二标注位置,以控制备用节点应用程序的处理进度不超过主节点应用程序的处理进度。
[0015]进一步地,第一标注位置和第二标注位置以异步的形式进行广播;装置还包括频率确定模块,用于:根据处理完成的业务消息所对应的数量和/或处理时长,确定广播的频率。
[0016]进一步地,控制模块还用于:根据广播指示的第一标记位置,全部备用节点应用程序分别从消息中间件中获取业务消息进行业务处理,构建处理完成的业务消息的数据状态,并确保处理完成的业务消息的标记位置不超过广播指示的第一标记位置;其中,备用节点应用程序构建的数据状态只进行本地存储。
[0017]进一步地,当主节点应用程序出现故障时,切换模块还用于:通过ZooKeeper框架从其余备用节点应用程序中选举出目标节点应用程序;目标节点应用程序向消息中间件写入指示了目标节点应用程序编号的目标消息;目标节点应用程序从消息中间件中获取第二标注位置之后的业务消息,并对业务消息进行处理,直至获取到目标消息,以确定故障发生时,处理完成的业务消息的数据状态。
[0018]进一步地,设置业务消息批量获取数量阈值;处理模块还用于:根据业务消息批量获取数量阈值,从消息中间件中获取相应的业务消息。
[0019]根据本专利技术实施例的另一个方面,提供了一种基于消息中间件的业务消息处理的电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当一个或多个本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于消息中间件的业务消息处理方法,其特征在于,应用于执行业务消息处理的有状态应用程序;所述方法包括:在所述应用程序以单副本模式运行时,通过主节点应用程序从消息中间件中获取多个业务消息,根据所述业务消息的业务类型进行业务处理,并构建处理完成的业务消息的数据状态;其中,所述数据状态指示了处理完成的业务消息对应的第一标注位置和历史处理结果;将处理完成的业务消息对应的所述数据状态,以事务的形式发送至所述消息中间件中进行存储;若所述主节点应用程序出现故障,启动备用节点应用程序,并利用所述备用节点应用程序获取处理完成的业务消息对应的数据状态,以确定所述第一标注位置,所述备用节点应用程序重新获取所述业务消息,执行业务处理,并在所述备用节点应用程序中重新构建所述数据状态,并将所述第一标注位置之后的处理完成的业务消息对应的数据状态发送至所述消息中间件中进行存储。2.根据权利要求1所述的基于消息中间件的业务消息处理方法,其特征在于,若所述应用程序以多副本模式运行,在所述主节点应用程序从所述消息中间件中获取多个业务消息的步骤之后,所述方法还包括:确定所述多个业务消息组成的业务消息队列中第一个业务消息对应的第二标注位置,根据所述业务消息的类型进行业务处理,将业务处理结果写入消息中间件,并以异步方式构建处理完成的业务消息的数据状态;对所述第一标注位置和所述第二标注位置进行广播。3.根据权利要求2所述的基于消息中间件的业务消息处理方法,其特征在于,若所述应用程序以多副本模式运行,所述方法还包括:在所述主节点应用程序执行业务处理时,其余备用节点应用程序分别执行相应的业务处理,并获取所述主节点应用程序广播的所述第一标注位置和所述第二标注位置,以控制所述备用节点应用程序的处理进度不超过所述主节点应用程序的处理进度。4.根据权利要求2所述的基于消息中间件的业务消息处理方法,其特征在于,所述第一标注位置和所述第二标注位置以异步的形式进行广播;所述方法还包括:根据处理完成的业务消息所对应的数量和/或处理时长,确定所述广播的频率。5.根据权利要求3所述的基于消息中间件的业务消息处理方法,其特征在于,所述控制备用节点应用程序的处理进度不超过所述主节点应用程序的处理进度的步骤,包括:根据所述广播指示的第一标记位置,全部备用节点应用程序分别从所述消息中间件中获取业务消息进行业务处理,构建处理完成的业务消息的数据状态,并确保所述处理完成的业务消息的标记位置不超过所述广播指示的第一标记位置;其中,所述备用节点应用程序构建的数据状态只进行本地存储。6.根据权利要求5所述的基于消息中间件的业务消息处理方法,其特征在于,所述方法还包括:若所述主节点应用程序出现故障,通过ZooKeeper框架从其余备用节点应用程序中选举出目标节点应用程序;所述目标节点应用程序向所述消息中间件写入指示了目标节点应用程序编号的目标
消息;所述目标节点应用程序从所述消息中间件中获取所述第二标注位置之后的业务消息,并对所述业务消息进行处理,直至获取到所述目标消息,以确定故障发生时,处理完成的业务消息的数据状态。7.根据权利要求1所述的基于消息中间件的业务消息处理方法,其特征在于,设置业务消息批量获取数量阈值;所述从消息中间件中获取业务消息的步骤包括:根据所述业务消息批量获取数量阈值,从所述消息中间件中获取相应的业务消息。8.一种基于消息中间件的业务消息处理装置,其特征在于,设置于执行业务消息处理的有状态应用程序,所述应用程序以单副本模式运行;所述装置包括:处理模块,在所述应用程序以单副本模式运行时,用于通过主节点应用程序从消息中间件中获取...

【专利技术属性】
技术研发人员:侯德才柳兆飞史梦洁詹廷蔚杨欢王勇周庆良
申请(专利权)人:中国证券登记结算有限责任公司
类型:发明
国别省市:

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

1