一种业务数据重试方法及相关设备与流程

文档序号:26102448发布日期:2021-07-30 18:13阅读:65来源:国知局
一种业务数据重试方法及相关设备与流程

本公开涉及计算机技术领域,尤其涉及一种业务数据重试方法及相关设备。



背景技术:

当前,企业日常需要使用不同业务系统分别对相关业务数据进行处理。业务系统是企业根据自身需要对业务的业务环节、业务合作以及业务交易进行相关数据处理的系统。

为了应对多种因素导致业务系统进行相关数据处理失败,需要根据与该业务系统关联的多张数据库表设计重试系统,以使在数据处理失败的情况下进行重试。由于不同类别的业务系统的关联的数据库表可能不同,因此对重试系统的设计与改造极其复杂,并且由于重试系统与业务系统耦合紧密,导致任一系统出现故障都会影响到另一系统的正常运行。



技术实现要素:

鉴于上述问题,本公开提供一种克服上述问题或者至少部分地解决上述问题的一种业务数据重试方法及相关设备,技术方案如下:

一种业务数据重试方法,应用于重试系统,所述方法包括:

在消息中间件获得业务系统发送的业务数据并将所述业务数据保存在第一存储空间之后,获得所述第一存储空间中的所述业务数据,其中,所述业务数据包括业务执行数据和与所述业务执行数据关联的业务重试数据;

将所述业务数据保存至预设数据库中;

根据所述业务数据中的所述业务重试数据,对所述业务执行数据配置定时重试任务;

在所述定时重试任务开始的情况下,在所述预设数据库中获得所述业务执行数据;

通过所述消息中间件将所述业务执行数据发送至所述业务系统中,以使所述业务系统执行所述业务执行数据,获得数据执行结果;

获得所述业务系统通过所述消息中间件发送的所述数据执行结果;

确定所述数据执行结果是成功或失败,如果失败,则对所述定时重试任务中配置的重试次数减1,如果成功,则结束所述定时重试任务;

确定所述定时重试任务中配置的所述重试次数是否为0,如果不为0,则返回执行所述在所述定时重试任务开始的情况下,在所述预设数据库中获得所述业务执行数据的步骤,如果为0,则结束所述定时重试任务。

可选的,所述业务重试数据包括初始重试次数和数据执行结果定义数据,其中,所述数据执行结果定义数据指示所述数据执行结果是成功或失败。

可选的,所述根据所述业务数据中的所述业务重试数据,对所述业务执行数据配置定时重试任务,包括:

根据所述初始重试次数和所述数据执行结果定义数据,对所述业务执行数据配置定时重试任务。

可选的,所述获得所述第一存储空间中的所述业务数据,包括:

按照预设读取周期对所述第一存储空间进行读取,获得保存在所述第一存储空间中的所述业务数据。

可选的,所述预设数据库中的表字段以java通用参数命名,其中,所述java通用参数包括beanname,methodname以及targetvalue。

可选的,所述重试系统、所述消息中间件以及所述业务系统之间通过java反射机制进行数据传输。

一种业务数据重试装置,应用于重试系统,所述业务数据重试装置包括:业务数据获得单元、业务数据保存单元、任务配置单元、业务执行数据获得单元、业务执行数据发送单元、数据执行结果获得单元、数据执行结果验证单元、重试次数调整单元、重试次数确定单元以及任务结束单元,

所述业务数据获得单元,用于在消息中间件获得业务系统发送的业务数据并将所述业务数据保存在第一存储空间之后,获得所述第一存储空间中的所述业务数据,其中,所述业务数据包括业务执行数据和与所述业务执行数据关联的业务重试数据;

所述业务数据保存单元,用于将所述业务数据保存至预设数据库中;

所述任务配置单元,用于根据所述业务数据中的所述业务重试数据,对所述业务执行数据配置定时重试任务;

所述业务执行数据获得单元,用于在所述定时重试任务开始的情况下,在所述预设数据库中获得所述业务执行数据;

所述业务执行数据发送单元,用于通过所述消息中间件将所述业务执行数据发送至所述业务系统中,以使所述业务系统执行所述业务执行数据,获得数据执行结果;

所述数据执行结果获得单元,用于获得所述业务系统通过所述消息中间件发送的所述数据执行结果;

所述数据执行结果验证单元,用于确定所述数据执行结果是成功或失败,如果失败,则触发所述重试次数调整单元,如果成功,则触发所述任务结束单元;

所述重试次数调整单元,用于对所述定时重试任务中配置的重试次数减1;

所述重试次数确定单元,用于确定所述定时重试任务中配置的所述重试次数是否为0,如果不为0,则触发所述业务执行数据获得单元,如果为0,则触发所述任务结束单元;

所述任务结束单元,用于结束所述定时重试任务。

可选的,所述业务数据获得单元,具体用于按照预设读取周期对所述第一存储空间进行读取,获得保存在所述第一存储空间中的所述业务数据。

一种计算机可读存储介质,其上存储有程序,所述程序被处理器执行时实现如上述任一项所述的业务数据重试方法。

一种电子设备,所述电子设备包括至少一个处理器、以及与处理器连接的至少一个存储器、总线;其中,所述处理器、所述存储器通过所述总线完成相互间的通信;所述处理器用于调用所述存储器中的程序指令,以执行如上述任一项所述的业务数据重试方法。

借由上述技术方案,本公开提供的一种业务数据重试方法及相关设备,使得消息中间件在获得业务系统发送的业务数据并保存在第一存储空间之后,由重试系统从第一存储空间中获得该业务数据并将保存至预设数据库中,再根据该业务数据中的业务重试数据对该业务数据中的业务执行数据配置定时重试任务,按照该定时重试任务将业务执行数据通过消息中间件回调至业务系统中,由业务系统在执行业务执行数据后,通过消息中间件将数据执行结果回执至重试系统,由重试系统至少根据该数据执行结果确定是否需要重新将业务执行数据发送至业务系统中进行重试。本公开通过消息中间件实现对业务系统与重试系统之间的解耦,使得重试系统方便适配多种不同的业务系统。

上述说明仅是本公开技术方案的概述,为了能够更清楚了解本公开的技术手段,而可依照说明书的内容予以实施,并且为了让本公开的上述和其它目的、特征和优点能够更明显易懂,以下特举本公开的具体实施方式。

附图说明

通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本公开的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:

图1示出了本公开实施例提供的业务数据重试方法的一种实施方式的示意图;

图2示出了本公开实施例提供的业务数据重试方法的另一种实施方式的示意图;

图3示出了本公开实施例提供的业务数据重试装置的结构示意图;

图4示出了本公开实施例提供的电子设备的结构示意图。

具体实施方式

下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。

如图1所示,本公开实施例提供的业务数据重试方法的一种实施方式的示意图,该业务数据重试方法应用于重试系统,该业务数据重试方法包括:

s100、在消息中间件获得业务系统发送的业务数据并将业务数据保存在第一存储空间之后,获得第一存储空间中的业务数据,其中,业务数据包括业务执行数据和与业务执行数据关联的业务重试数据。

其中,业务系统可以是企业根据自身需要对业务的业务环节、业务合作以及业务交易进行相关数据处理的系统。业务系统具体与企业和各合作伙伴以及利益相关者在业务合作和业务交易过程中的定位有关。在本公开实施例中,业务系统的类型为java后端服务器。重试系统(drogonserver)可以为向业务系统提供重试功能的服务器。

具体的,重试系统可以对外提供jar包。在业务系统中部署该jar包,相当于业务系统安装有drogonclient,使得业务系统可以通过该jar包中提供的方法将业务数据发送至消息中间件。其中,jar包中封装了该重试系统的代码,可以方便不同类别的业务系统进行调用,节约了整体开发时间。

可选的,本公开实施例还可以对业务系统部署bean和拦截器,并对业务系统中需要重试的数据添加重试注解。拦截器可以对业务系统中的数据进行拦截,筛选出携带有注解的数据,通过判断该注解是否为重试注解,确定该数据是否为需要重试的业务数据,如果是,则将该需要重试的业务数据发送至消息中间件。

其中,业务执行数据为由业务系统进行执行处理的数据。业务重试数据为在业务系统对业务执行数据处理失败时进行重试的方法及相关参数的数据。

其中,第一存储空间可以是消息中间件的本地磁盘。本公开实施例通过将业务系统发送的业务数据存在本地磁盘中,以本地磁盘作为缓冲,在任一单位时间内业务系统发送的数据量过大时,可以避免重试系统由于负担过大出现故障。同时,由于业务系统与重试系统之间通过消息中间件进行数据传输,在业务系统出现故障时不会影响重试系统,在重试系统出现故障时也不会影响业务系统。

可选的,本公开实施例获得第一存储空间中的业务数据的具体过程可以包括:按照预设读取周期对第一存储空间进行读取,获得保存在第一存储空间中的业务数据。

在本公开实施例中,业务系统将业务数据发送至消息中间件,由消息中间件将该业务数据存储至第一存储空间中。重试系统可以订阅消息中间件的消息服务。在第一存储空间中已经保存有该业务数据的情况下,重试系统可以获知该业务数据已经保存至第一存储空间,使得重试系统可以按照预设读取周期对第一存储空间中保存的数据进行读取,从而获得第一存储空间中的业务数据。可以理解的是,预设读取周期可以根据需求进行设置。

s200、将业务数据保存至预设数据库中。

预设数据库为重试系统的本地数据库。本公开实施例通过将该业务数据保存在预设数据库中,使得数据可以持久化存储,避免如网络抖动等意外因素导致数据丢失。

可选的,重试系统、消息中间件以及业务系统之间通过java反射机制进行数据传输。本公开实施例利用java反射机制进行数据传输,方便将预设数据库设计为以普通方式与对象协作的库。

可选的,预设数据库中的表字段以java通用参数命名。其中,java通用参数可以包括beanname,methodname以及targetvalue。由于在预设数据库中以java通用参数对表字段进行命名,而不是以业务系统具体表字段进行命名,使得本公开实施例可以将业务数据以java特定格式保存在预设数据库中,实现重试系统对不同类别的业务系统的通用适配。

s300、根据业务数据中的业务重试数据,对业务执行数据配置定时重试任务。

可选的,本公开实施例可以根据业务重试数据中的重试开始时间段,在对业务执行数据配置的定时重试任务中设置该重试开始时间段,以使定时重试任务在该重试开始时间段内开始执行。

可选的,业务重试数据可以包括初始重试次数和数据执行结果定义数据,其中,数据执行结果定义数据指示数据执行结果是成功或失败。在本公开实施例中,业务重试数据可以由相关技术人员进行设置。

可选的,基于图1所示方法,如图2所示,本公开实施例提供的业务数据重试方法的另一种实施方式的示意图,步骤s300可以包括:

s310、根据初始重试次数和数据执行结果定义数据,对业务执行数据配置定时重试任务。

可以理解的是,初始重试次数以及数据执行结果定义数据可以由业务系统的使用方进行设置。本公开实施例可以根据该初始重试次数配置定时重试任务中的重试次数,以使业务执行数据能在该重试次数以内进行重试,以防止无法执行的业务执行数据反复占据重复系统的资源。本公开实施例可以根据数据执行结果定义数据作为配置定时重试任务中对数据执行结果是否成功的依据,以防止已执行成功的业务执行数据被反复重试,造成重试系统的资源浪费。

s400、在定时重试任务开始的情况下,在预设数据库中获得业务执行数据。

s500、通过消息中间件将业务执行数据发送至业务系统中,以使业务系统执行业务执行数据,获得数据执行结果。

本公开实施例可以在定时重试任务开始的情况下,在预设数据库中拉取获得与该定时重试任务关联的业务执行数据,并将该业务执行数据以反射的方式通过消息中间件发送至业务系统中,在业务系统执行该业务执行数据后生成数据执行结果。

s600、获得业务系统通过消息中间件发送的数据执行结果。

可以理解的是,业务系统也可以通过反射的方式通过消息中间件将数据执行结果发送至重试系统。

s700、确定数据执行结果是成功或失败,如果失败,则执行步骤s710,如果成功,则执行步骤s900。

可以理解的是,确定数据执行结果是否成功,以数据执行结果定义为依据已配置至定时重试任务中,因此本公开实施例可以确定由业务系统回执的数据执行结果是成功或失败。

s710、对定时重试任务中配置的重试次数减1。

由于数据执行结果为失败,相当于此次对业务执行数据的重试失败,因此需要对定时重试任务中配置的重试次数进行调整,将重试任务中配置的重试次数减1。

s800、确定定时重试任务中配置的重试次数是否为0,如果不为0,则返回执行步骤s400,如果为0,则执行步骤s900。

s900、结束定时重试任务。

可选的,本公开实施例可以在确定数据执行结果是成功的情况下,将预设数据库中保存的业务执行数据的状态设置为成功。

可以理解的是,在确定数据执行结果为失败但重试次数未用尽的情况下,可以不改变预设数据库中保存的业务执行数据的状态。

可选的,本公开实施例可以在重试次数为0且最后一次确定数据执行结果为失败的情况下,将预设数据库中保存的业务执行数据的状态设置为失败,并生成数据执行失败消息发送给指定地址,以使该指定地址对应的相关人员及时获知该业务执行数据执行失败的信息。

可以理解的是,当重试次数为0时,默认该业务执行数据已无重试的必要。因此为了避免该业务执行数据的定时重试任务无止境地进行重试,在重试次数用尽的情况下,本公开实施例可以结束该定时重试任务。

本公开提供的一种业务数据重试方法,使得消息中间件在获得业务系统发送的业务数据并保存在第一存储空间之后,由重试系统从第一存储空间中获得该业务数据并将保存至预设数据库中,再根据该业务数据中的业务重试数据对该业务数据中的业务执行数据配置定时重试任务,按照该定时重试任务将业务执行数据通过消息中间件回调至业务系统中,由业务系统在执行业务执行数据后,通过消息中间件将数据执行结果回执至重试系统,由重试系统至少根据该数据执行结果确定是否需要重新将业务执行数据发送至业务系统中进行重试。本公开至少通过消息中间件实现对业务系统与重试系统之间的解耦,使得重试系统方便适配多种不同的业务系统。

与上述方法实施例相对应,本公开实施例还提供一种业务数据重试装置,应用于重试系统,该业务数据重试装置的结构如图3所示,可以包括:业务数据获得单元00、业务数据保存单元01、任务配置单元02、业务执行数据获得单元03、业务执行数据发送单元04、数据执行结果获得单元05、数据执行结果验证单元06、重试次数调整单元07、重试次数确定单元08以及任务结束单元09。

业务数据获得单元00,用于在消息中间件获得业务系统发送的业务数据并将业务数据保存在第一存储空间之后,获得第一存储空间中的业务数据,其中,业务数据包括业务执行数据和与业务执行数据关联的业务重试数据。

可选的,业务重试数据可以包括初始重试次数和数据执行结果定义数据,其中,数据执行结果定义数据指示数据执行结果是成功或失败。

可选的,业务数据获得单元00,具体用于按照预设读取周期对第一存储空间进行读取,获得保存在第一存储空间中的业务数据。

业务数据保存单元01,用于将业务数据保存至预设数据库中。

可选的,重试系统、消息中间件以及业务系统之间通过java反射机制进行数据传输。

可选的,预设数据库中的表字段以java通用参数命名。其中,java通用参数可以包括beanname,methodname以及targetvalue。

任务配置单元02,用于根据业务数据中的业务重试数据。对业务执行数据配置定时重试任务。

可选的,任务配置单元02,具体用于根据初始重试次数和数据执行结果定义数据,对业务执行数据配置定时重试任务。

业务执行数据获得单元03,用于在定时重试任务开始的情况下,在预设数据库中获得业务执行数据。

业务执行数据发送单元04,用于通过消息中间件将业务执行数据发送至业务系统中,以使业务系统执行业务执行数据,获得数据执行结果。

数据执行结果获得单元05,用于获得业务系统通过消息中间件发送的数据执行结果。

数据执行结果验证单元06,用于确定数据执行结果是成功或失败,如果失败,则触发重试次数调整单元07,如果成功,则触发任务结束单元09。

重试次数调整单元07,用于对定时重试任务中配置的重试次数减1。

重试次数确定单元08,用于确定定时重试任务中配置的重试次数是否为0,如果不为0,则触发业务执行数据获得单元03,如果为0,则触发任务结束单元09。

任务结束单元09,用于结束定时重试任务。

本公开提供的一种业务数据重试装置,使得消息中间件在获得业务系统发送的业务数据并保存在第一存储空间之后,由重试系统从第一存储空间中获得该业务数据并将保存至预设数据库中,再根据该业务数据中的业务重试数据对该业务数据中的业务执行数据配置定时重试任务,按照该定时重试任务将业务执行数据通过消息中间件回调至业务系统中,由业务系统在执行业务执行数据后,通过消息中间件将数据执行结果回执至重试系统,由重试系统至少根据该数据执行结果确定是否需要重新将业务执行数据发送至业务系统中进行重试。本公开至少通过消息中间件实现对业务系统与重试系统之间的解耦,使得重试系统方便适配多种不同的业务系统。

关于上述实施例中的装置,其中各个单元执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。

所述业务数据重试装置包括处理器和存储器,上述业务数据获得单元00、业务数据保存单元01、任务配置单元02、业务执行数据获得单元03、业务执行数据发送单元04、数据执行结果获得单元05、数据执行结果验证单元06、重试次数调整单元07、重试次数确定单元08以及任务结束单元09等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。

处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来至少通过消息中间件实现对业务系统与重试系统之间的解耦,使得重试系统方便适配多种不同的业务系统。

本公开实施例提供了一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时实现所述业务数据重试方法。

本公开实施例提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行所述业务数据重试方法。

如图4所示,本公开实施例提供了一种电子设备100,电子设备100包括至少一个处理器101、以及与处理器101连接的至少一个存储器102、总线103;其中,处理器101、存储器102通过总线103完成相互间的通信;处理器101用于调用存储器102中的程序指令,以执行上述的业务数据重试方法。

本文中的电子设备可以是服务器、pc、pad、手机等。

本公开还提供了一种计算机程序产品,当在电子设备上执行时,适于执行初始化有上述业务数据重试方法步骤的程序。

本公开是参照根据本公开实施例的方法、装置、电子设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程设备的处理器以产生一个机器,使得通过计算机或其他可编程设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

在一个典型的配置中,电子设备包括一个或多个处理器(cpu)、存储器和总线。电子设备还可以包括输入/输出接口、网络接口等。

存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram),存储器包括至少一个存储芯片。存储器是计算机可读介质的示例。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。

本领域技术人员应明白,本公开的实施例可提供为方法、系统或计算机程序产品。因此,本公开可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本公开可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

以上仅为本公开的实施例而已,并不用于限制本公开。对于本领域技术人员来说,本公开可以有各种更改和变化。凡在本公开的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本公开的权利要求范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1