一种消息补偿方法及装置制造方法及图纸

技术编号:21891361 阅读:16 留言:0更新日期:2019-08-17 14:18
本发明专利技术公开了一种消息补偿方法及装置,该方法包括:当监测到指定的报错信息时,捕捉消息中间件发送的,且未成功插入到数据库中的消息,将所述消息存储到指定区域内,按照预设的时间间隔,周期性的从所述指定区域内获取至少一个消息,将获取的消息插入到数据库中。利用上述发明专利技术,即使当前的分布式事务存在消息丢失(如,未成功插入到数据库内)的情况,也可以成功的捕捉到丢失的消息,并将消息插入到数据库内,大大降低了技术实现的难度。

A Message Compensation Method and Device

【技术实现步骤摘要】
一种消息补偿方法及装置
本专利技术涉及计算机
,具体涉及一种消息补偿方法及装置。
技术介绍
随着业务数据的种类和数量的不断增多,计算机节点(如,服务器和数据库等)的运行压力也越来越大,为了降低计算机节点的运行压力,同时提高处理业务数据的能力,通常使用分布式事务的方式来处理业务数据,即,通过多个独立运行的计算机节点共同处理一个事务。在实际应用中,多个独立运行的计算机节点在共同处理一个事务的过程中,由于网络问题会造成各个计算机节点间传输的数据存在丢失或混乱,如,在共同处理转账业务时,两个账号分布于两个不同的数据库或者子系统里,此时位于数据库A的账号A要向位于数据库B的账号B转账,假设数据库A在执行完转账操作并在向消息中间件发送消息后,网络出现连接错误,那么消息中间件在接收到数据库A发送消息后无法插入到消息中间件对应的数据库内(即,消息丢失),后续也无法发送给数据库B,从而造成账号A已经显示转账,而账号B则未显示转账,从而使得整个事务出现错误,因此,针对上述情况需要对未插入到数据库内的消息(即,丢失的消息)进行补偿,以免整个事务出现错误。现有技术通常是消息中间件会定期扫描消息集群中的事务消息,若发现prepared消息,则向prepared发送端确认,后续,消息中间件会根据prepared发送端的反馈消息来决定对prepared消息对应的事务消息是回滚还是继续向接收端发送确认消息。但是,能够实现上述现有技术的消息中间件的事务消息部分的代码未开源,技术实现的难度比较大。
技术实现思路
鉴于上述问题,提出了本专利技术以便提供一种克服上述问题或者至少部分地解决上述问题的消息补偿方法及装置。根据本专利技术的一个方面,一种消息补偿方法,所述方法包括:当监测到指定的报错信息时,捕捉消息中间件发送的,且未成功插入到数据库中的消息;将所述消息存储到指定区域内;按照预设的时间间隔,周期性的从所述指定区域内获取至少一个消息;将获取的消息插入到数据库中。根据本专利技术的另一方面,提供了一种消息补偿装置,所述装置包括:捕捉模块,用于当监测模块监测到指定的报错信息时,捕捉消息中间件发送的,且未成功插入到数据库中的消息;存储模块,用于将所述消息存储到指定区域内;获取模块,用于按照预设的时间间隔,周期性的从所述指定区域内获取至少一个消息;插入模块,用于将获取的消息插入到数据库中。根据本专利技术的又一方面,提供了一种服务器,包括:处理器、存储器、通信接口和通信总线,所述处理器、所述存储器和所述通信接口通过所述通信总线完成相互间的通信;所述存储器用于存放至少一可执行指令,所述可执行指令使所述处理器执行以下操作:当监测到指定的报错信息时,捕捉消息中间件发送的,且未成功插入到数据库中的消息;将所述消息存储到指定区域内;按照预设的时间间隔,周期性的从所述指定区域内获取至少一个消息;将获取的消息插入到数据库中。根据本专利技术的又一方面,提供了一种存储介质,所述存储介质中存储有至少一可执行指令,所述可执行指令使处理器执行以下操作:当监测到指定的报错信息时,捕捉消息中间件发送的,且未成功插入到数据库中的消息;将所述消息存储到指定区域内;按照预设的时间间隔,周期性的从所述指定区域内获取至少一个消息;将获取的消息插入到数据库中。根据本专利技术提供的消息补偿方法及装置,该方法包括:当监测到指定的报错信息时,捕捉消息中间件发送的,且未成功插入到数据库中的消息,将所述消息存储到指定区域内,按照预设的时间间隔,周期性的从所述指定区域内获取至少一个消息,将获取的消息插入到数据库中。利用上述专利技术,即使当前的分布式事务存在消息丢失(如,未成功插入到数据库内)的情况,也可以成功的捕捉到丢失的消息,并将消息插入到数据库内,大大降低了技术实现的难度。上述说明仅是本专利技术技术方案的概述,为了能够更清楚了解本专利技术的技术手段,而可依照说明书的内容予以实施,并且为了让本专利技术的上述和其它目的、特征和优点能够更明显易懂,以下特举本专利技术的具体实施方式。附图说明通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本专利技术的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:图1示出了根据本专利技术一个实施例的消息补偿方法的流程图;图2为本申请实施例提供了一种消息补偿的系统结构图;图3为本申请实施例提供的一种消息补偿的具体实施方式;图4为本申请实施例提供了一种消息补偿的装置;图5示出了本专利技术的一种服务器的结构示意图。具体实施方式下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。图1示出了根据本专利技术一个实施例的消息补偿方法的流程图。本方法用于补偿未成功插入到数据库内的消息。如图1所示,该方法包括如下步骤:S101:当监测到指定的报错信息时,捕捉消息中间件发送的,且未成功插入到数据库中的消息。在实际应用中,多个独立运行的计算机节点在共同处理一个事务的过程中,由于网络问题会造成各个计算机节点间传输的数据存在丢失或混乱,如,在共同处理转账业务时,两个账号分布于两个不同的数据库或者子系统里,此时位于数据库A的账号A要向位于数据库B的账号B转账,假设数据库A在执行完转账操作并在向消息中间件发送消息后,网络出现连接错误,那么消息中间件在接收到数据库A发送消息后无法插入到消息中间件对应的数据库内(即,消息丢失),后续也无法发送给数据库B,从而造成账号A已经显示转账,而账号B则未显示转账,从而使得整个事务出现错误,因此,针对上述情况需要对未插入到数据库内的消息(即,丢失的消息)进行补偿,以免整个事务出现错误。由于想要实现对未成功插入到数据库内的消息(即,丢失的消息)进行补偿,首先需要知道什么时候需要对未插入到数据库内的消息进行补偿,因此,在本申请实施例中,需要知道什么时候会出现有消息未成功插入到数据库内的情况。进一步的,在本申请实施例中,想要知道什么时候会出现有消息未成功插入到数据库内的情况,具体可以实时监测当前是否存在指定的报错信息。在此需要说明的是,指定的报错信息可以根据实际情况而定,本申请实施例提供两种不同的报错信息,具体的,指定的报错信息包括:网络故障报错信息和/或硬件故障报错信息,出现上述任何一个报错信息都有可能会出现有消息未成功插入到数据库内的情况。进一步的,由于本专利技术主要解决的是对消息中间件向其对应的数据库内插入消息时会因为网络连接错误等问题所出现的未成功插入到数据库内的消息进程补偿,因此,在本申请实施例中,当监测到指定的报错信息时,需要捕捉消息中间件发送的,且未成功插入到数据库中的消息。在此需要说明的是,没有监测到指定的报错信息时,说明消息中间件将所接收到的消息成功的向其对应的数据库内插入消息。S102:将所述消息存储到指定区域内。由于在实际应用中,网络故障或者硬件故障的修复需要一定的时间,因此,在本申请实施例中,在捕捉到消息中间件发送的,且未成功插入到数据库中的消息后,需要将捕捉到的消息存储到指定区域内。S本文档来自技高网...

【技术保护点】
1.一种消息补偿的方法,其特征在于,所述方法包括:当监测到指定的报错信息时,捕捉消息中间件发送的,且未成功插入到数据库中的消息;将所述消息存储到指定区域内;按照预设的时间间隔,周期性的从所述指定区域内获取至少一个消息;将获取的消息插入到数据库中。

【技术特征摘要】
1.一种消息补偿的方法,其特征在于,所述方法包括:当监测到指定的报错信息时,捕捉消息中间件发送的,且未成功插入到数据库中的消息;将所述消息存储到指定区域内;按照预设的时间间隔,周期性的从所述指定区域内获取至少一个消息;将获取的消息插入到数据库中。2.如权利要求1所述的方法,其特征在于,所述指定的报错信息包括:网络故障报错信息和/或硬件故障报错信息。3.如权利要求1所述的方法,其特征在于,捕捉消息中间件发送的,且未成功插入到数据库中的消息,具体包括:通过logback滚动日志工具捕捉消息中间件发送的,且未成功插入到数据库中的消息。4.如权利要求1所述的方法,其特征在于,周期性的从所述指定区域内获取至少一个消息,具体包括:周期性的从所述指定区域内获取全部所述消息。5.如权利要求1所述的方法,其特征在于,在将获取的消息插入到数据库中之后,所述方法还包括:将插入到数据库中的消息复制到报错排查文件内,并在所述指定区域内删除消息。6.如权利要求1~5任一所述的方法,其特征在于,所述数据库包括:hbase数据库。7.一种消息补偿的装置,其特征在于,所述装置包括:捕捉模块,用于...

【专利技术属性】
技术研发人员:贺白云
申请(专利权)人:杭州比智科技有限公司
类型:发明
国别省市:浙江,33

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

1