CN108958955A - 一种基于消息驱动的事务处理方法及装置 - Google Patents
一种基于消息驱动的事务处理方法及装置 Download PDFInfo
- Publication number
- CN108958955A CN108958955A CN201810735951.1A CN201810735951A CN108958955A CN 108958955 A CN108958955 A CN 108958955A CN 201810735951 A CN201810735951 A CN 201810735951A CN 108958955 A CN108958955 A CN 108958955A
- Authority
- CN
- China
- Prior art keywords
- transaction
- message
- transaction message
- execution state
- persistent storage
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本申请公开了一种基于消息驱动的事务处理方法及装置,该方法包括:执行携带有执行状态的数据库事务,监测执行数据库事务所产生的事务消息,拦截监测到的事务消息,并缓存在本地,当数据库事务携带的执行状态为完成状态时,发送所缓存的事务消息。通过上述方法,由于将执行数据库所产生的各事务消息缓存到本地,当数据库事务完成时,再将缓存在本地的各事务消息发送出去,因此,即使终端在执行数据库事务的过程中某个操作发生了故障,也不会出现该操作之前所产生的事务消息无法撤销的情况。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种基于消息驱动的事务处理方法及装置。
背景技术
目前,为了提升终端或数据库业务处理效率,缓解终端或数据库的运行负载,通常使用基于消息驱动的分布式架构来处理数据库事务。
现有的基于消息驱动的分布式架构来处理数据库事务主要流程为:终端执行数据库事务,当执行数据库事务产生事务消息时,将所生成的事务消息发送给消息中间件,消息中间件将所接收的事务消息发送给客户端。
但是,在现有技术中,由于终端在执行数据库事务时某个操作发生了故障,该数据库事务会重新执行,因此,当终端在执行数据库事务的过程中某个操作发生了故障,就会导致在该操作之前向消息中间件所发送的事务消息无法撤销。
发明内容
本申请实施例提供一种基于消息驱动的事务处理方法及装置,用以解决现有技术中当终端在执行数据库事务的过程中某个操作发生了故障,就会导致在该操作之前向消息中间件所发送的事务消息无法撤销的问题。
本申请实施例提供的一种基于消息驱动的事务处理的方法,所述方法包括:
执行数据库事务,其中,所执行的数据库事务携带有执行状态;
监测执行所述数据库事务所产生的事务消息;
拦截监测到的事务消息,并缓存在本地;
当所述数据库事务携带的执行状态为完成状态时,发送所缓存的事务消息。
优选地,所述方法还包括:
在执行数据库事务之前,指定数据库事务;在指定的数据库事务内添加特定标记;监测携带有特定标记的数据库事务为待执行的数据库事务。
优选地,所述方法还包括:
当所述数据库事务携带的执行状态为回滚状态时,删除缓存在本地内的事务消息。
优选地,所述事务消息持久化存储,所述数据库事务携带的执行状态持久化存储。
优选地,所述方法还包括:
在发送所缓存的事务消息,或删除缓存在本地内的事务消息之后,将持久化存储的事务消息标记为失效。
优选地,所述方法还包括:
在执行数据库事务之后,生成所执行的数据库事务对应的键值;建立所执行的数据库事务对应的键值、所执行的数据库事务生成的事务消息以及所执行的数据库事务对应的携带的执行状态三者之间的对应关系。
优选地,所述方法还包括:
当所述数据库事务携带的执行状态为完成状态时,发送所缓存的事务消息之后,接收返回的所述数据库事务对应的事务消息,根据建立的所执行的数据库事务对应的键值、所执行的数据库事务生成的事务消息以及所执行的数据库事务对应的携带的执行状态三者之间的对应关系,将返回的所述数据库事务对应的事务消息与持久化存储的所述数据库事务对应的事务消息进行匹配,确定返回的所述数据库事务对应的事务消息是否已经存在;当未存在返回的所述数据库事务对应的事务消息时,执行返回的所述数据库事务对应的事务消息。
优选地,所述方法还包括:
根据建立的所执行的数据库事务对应的键值、所执行的数据库事务生成的事务消息以及所执行的数据库事务对应的携带的执行状态三者之间的对应关系,每隔预设的周期检查持久化存储的事务消息;根据持久化存储的数据库事务携带的执行状态,确定持久化存储的事务消息是否发送。
本申请实施例提供的一种基于消息驱动的事务处理的装置,所述装置包括:
执行模块,用于执行数据库事务,其中,所执行的数据库事务携带有执行状态;
监测模块,用于监测执行所述数据库事务所产生的事务消息;
拦截模块,用于拦截监测到的事务消息,并缓存在本地;
发送模块,用于当所述数据库事务携带的执行状态为完成状态时,发送所缓存的事务消息。
优选地,所述装置还包括:
标记添加模块,用于在执行模块执行数据库事务之前,指定数据库事务,在指定的数据库事务内添加特定标记,监测携带有特定标记的数据库事务为待执行的数据库事务。
优选地,所述装置还包括:
回滚模块,用于当所述数据库事务携带的执行状态为回滚状态时,删除缓存在本地内的事务消息。
优选地,所述事务消息持久化存储,所述数据库事务携带的执行状态持久化存储。
优选地,所述装置还包括:
失效模块,用于在所述发送模块发送所缓存的事务消息,或所述回滚模块删除缓存在本地内的事务消息之后,将持久化存储的事务消息标记为失效。
优选地,所述装置还包括:
键值模块,用于在所述执行模块执行数据库事务之后,生成所执行的数据库事务对应的键值,建立所执行的数据库事务对应的键值、所执行的数据库事务生成的事务消息以及所执行的数据库事务对应的携带的执行状态三者之间的对应关系。
优选地,所述装置还包括:
返回接收模块,用于当所述数据库事务携带的执行状态为完成状态时,所述发送模块发送所缓存的事务消息之后,接收返回的所述数据库事务对应的事务消息,根据建立的所执行的数据库事务对应的键值、所执行的数据库事务生成的事务消息以及所执行的数据库事务对应的携带的执行状态三者之间的对应关系,将返回的所述数据库事务对应的事务消息与持久化存储的所述数据库事务对应的事务消息进行匹配,确定返回的所述数据库事务对应的事务消息是否已经存在,当未存在返回的所述数据库事务对应的事务消息时,执行返回的所述数据库事务对应的事务消息。
优选地,所述装置还包括:
检查模块,用于根据建立的所执行的数据库事务对应的键值、所执行的数据库事务生成的事务消息以及所执行的数据库事务对应的携带的执行状态三者之间的对应关系,每隔预设的周期检查持久化存储的事务消息,根据持久化存储的数据库事务携带的执行状态,确定持久化存储的事务消息是否发送。
本申请实施例提供一种基于消息驱动的事务处理的方法及装置,该方法包括:执行携带有执行状态的数据库事务,监测执行数据库事务所产生的事务消息,拦截监测到的事务消息,并缓存在本地,当数据库事务携带的执行状态为完成状态时,发送所缓存的事务消息。通过上述方法,由于将执行数据库所产生的各事务消息缓存到本地,当数据库事务完成时,再将缓存在本地的各事务消息发送出去,因此,即使终端在执行数据库事务的过程中某个操作发生了故障,也不会出现该操作之前所产生的事务消息无法撤销的情况。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1为本申请实施例提供的基于消息驱动的事务处理的过程;
图2为本申请实施例提供的基于消息驱动的事务处理的实施方式;
图3为本申请实施例提供的基于消息驱动的事务处理的具体应用;
图4为本申请实施例提供的基于消息驱动的事务处理的装置结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合本申请具体实施例及相应的附图对本申请技术方案进行清楚、完整地描述。显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
图1为本申请实施例提供的基于消息驱动的事务处理的过程,具体包括以下步骤:
S101:执行数据库事务。
在实际应用中,为了提升终端或数据库业务处理效率,缓解终端或数据库的运行负载,通常使用基于消息驱动的分布式架构来处理数据库事务。
在此需要说明的是,在本申请中,基于数据库所完成的操作事务则为数据库事务。
进一步的,由于在实际应用中,需要区分出哪些数据库事务需要通过本申请的方法来执行,因此,在本申请中,可以预先在通过本申请的方法来执行的数据库事务添加特定标记,具体的,指定数据库事务,在指定的数据库事务内添加特定标记,监测携带有特定标记的数据库事务为待执行的数据库事务。
在此需要说明的是,在代码层阶段为数据库事务添加特定标记的过程如下:首先查找出需要添加特定标记的数据库事务对应的代码块,该代码块包含一个数据库事务,同时产生事务消息,为查找出的代码块添加特定标记。
在此还需要说明的是,可通过监测器扫描并监测携带有特定标记的数据库事务为待执行的数据库事务。
S102:监测执行所述数据库事务所产生的事务消息。
S103:拦截监测到的事务消息,并缓存在本地。
进一步的,由于本申请是在数据库事务执行完成后才将所产生的事务消息全部发出的,因此,在本申请中,需要实时监测数据库事务在执行过程中所产生的事务消息,并拦截所监测到的事务消息,将所拦截的事务消息均缓存到本地队列中,不进行直接发送。
S104:当所述数据库事务携带的执行状态为完成状态时,发送所缓存的事务消息。
进一步的,由于本申请是在数据库事务执行完成后才将所产生的事务消息全部发出的,因此,在本申请中,需要知道当前执行数据库事务的状态,也就是说,数据库事务执行到了哪一步操作,基于此,在本申请中,可在执行数据库事务的过程中为不同操作阶段的数据库事务添加不同的执行状态,即,所执行的数据库事务携带有执行状态,也就是说,在执行数据库事务的同时,要不断更新不同操作阶段的数据库事务的执行状态,通过数据库事务的执行状态,可知道当前数据库事务的处理状态。
进一步的,当数据库事务携带的执行状态为完成状态时,从本地所缓存内取出全部事务消息,发送给消息中间件。
通过上述方法,由于将执行数据库所产生的各事务消息缓存到本地,当数据库事务完成时,再将缓存在本地的各事务消息发送出去,因此,即使终端在执行数据库事务的过程中某个操作发生了故障,也不会出现该操作之前所产生的事务消息无法撤销的情况。
在实际应用中,由于数据库事务的原子性决定了一个数据库事务要么全部完成,要么数据库事务在被执行的过程中会出现操作错误或者失误后全部重新回滚,又由于数据库事务的回滚操作是将数据库事务重新再做一遍,而本地队列中还缓存有数据库事务在执行错误或者失误之前的操作时所产生的事务消息,这样后续重新回滚所产生的新事务消息会与回滚之前所产生的新事务消息相互混淆,因此,在本申请中,当所述数据库事务携带的执行状态为回滚状态时,删除缓存在本地内的事务消息。
进一步的,在实际应用中,缓存在本地的事务消息有可能存在消息丢失的情况,为了保证缓存在本地的事务消息的可靠性,因此,在本申请中,执行数据库事务所产生的事务消息均持久化存储,具体可通过数据库或文件等形式实现持久化。另外,同样为了保证数据库事务所携带的执行状态的可靠性,因此,在本申请中,数据库事务所携带的执行状态也要持久化存储。
基于上述数据库事务的执行状态以及事务消息,在本申请中,在发送所缓存的事务消息,或删除缓存在本地内的事务消息之后,将持久化存储的事务消息标记为失效。
在此需要说明的是,发送所缓存的事务消息指的是所发送的事务消息是成功发送的。
进一步的,在本申请中为了能够在持久化存储的数据库内查找出当前数据库事务对应的执行状态以及所产生的事务消息,需要在执行数据库事务之后,生成所执行的数据库事务对应的键值,建立所执行的数据库事务对应的键值、所执行的数据库事务生成的事务消息以及所执行的数据库事务对应的携带的执行状态三者之间的对应关系。
进一步的,本申请在数据库事务携带的执行状态为完成状态时发送缓存的事务消息之后,会接收到消息中间件根据所发送的事务消息返回的数据库事务对应的事务消息,但是在实际应用中,有可能存在消息中间件根据所发送的事务消息返回多个相同的数据库事务对应的事务消息的情况,为了保证整个***的幂等性,即,同一事务消息,只要接收到,无论接收多少次,都执行一次,因此,在本申请中,接收返回的所述数据库事务对应的事务消息,根据建立的所执行的数据库事务对应的键值、所执行的数据库事务生成的事务消息以及所执行的数据库事务对应的携带的执行状态三者之间的对应关系,将返回的所述数据库事务对应的事务消息与持久化存储的所述数据库事务对应的事务消息进行匹配,确定返回的所述数据库事务对应的事务消息是否已经存在,当未存在返回的所述数据库事务对应的事务消息时,执行返回的所述数据库事务对应的事务消息。
进一步的,为了保证数据库事务在执行过程中所产生的所有事务消息不会丢失或未进行正常处理,在本申请中,可根据建立的所执行的数据库事务对应的键值、所执行的数据库事务生成的事务消息以及所执行的数据库事务对应的携带的执行状态三者之间的对应关系,每隔预设的周期检查持久化存储的事务消息,根据持久化存储的数据库事务携带的执行状态,确定持久化存储的事务消息是否发送。
在此需要说明的是,根据持久化存储的数据库事务携带的执行状态,确定持久化存储的事务消息是否发送具体可以:当持久化存储的数据库事务携带的执行状态为未完成状态时,持久化存储的事务消息不会发送,当持久化存储的数据库事务携带的执行状态为完成状态时,将持久化存储的事务消息发送出去。
通过上述持久化存储事务消息在数据库或文件中,可对所有事务消息进行回溯调查,方便准备。
另外,本发明还可通过组件形式集成,这样对功能代码逻辑改动较小,对***侵入性较小,同时也降低了研发人员的工作量。
进一步的,本申请给出了一种基于消息驱动的事务处理的实施方式,具体如图2所示:
S201:开始监测数据库事务。
S202:判断数据库事务是否包含特定标记,若否,则执行步骤S203,若是,则执行步骤S204。
S203:正常执行数据库事务。
在此需要说明的是,正常执行数据库事务指的是不使用本申请所提到的方法来执行数据库事务,也就是说,执行数据库事务所产生的事务消息不会被拦截并缓存在本地队列中。
S204:持久化存储数据库事务的执行状态。
S205:判断是否监测到事务消息,若是,则执行步骤S206,若否,则重新执行步骤S205。
S206:持久化存储事务消息。
S207:继续执行数据库事务。
S208:判断数据库事务是否执行错误,若是,则执行步骤S211,若否,则执行步骤S209。
S209:提交数据库事务。
S210:更新持久化存储的数据库事务的执行状态为完成状态。
S211:回滚数据库事务。
S212:更新持久化存储的数据库事务的执行状态为回滚状态,并返回步骤S204。
S213:结束监测数据库事务。
进一步的,本申请可以具体实际应用在贷款还款业务中,在贷款还款业务中,有些贷款用户会通过银行对公转账或者其他形式进行线下还款,财务***收到并确认该笔线下还款后,将该笔还款信息通知给信贷管理平台,具有权限的审核人员通过信贷管理平台选取该笔线下入账,可以选择对该笔入账发起提前结清操作,并且可以输入一定的息费豁免金额对用户费用进行减免。
以下结合图3的实施方式具体说明本申请在实际应用在贷款还款业务的应用。
S301:信贷管理平台开启数据库事务,记录数据库事务的执行状态。
S302:更新线下还款入账记录状态。
S303:创建一条提前结清订单。
S304:执行提前结清逻辑操作,并对线下还款的协议以及还款计划更新原始还款计划。
S305:检查到用户还款金额超出该笔协议的总还款金额。
在此需要说明的是,溢交款金额=实际还款金额-实际应还金额。
S306:拦截通知账户***增加用户溢交款额度的事务消息,并缓存在本地。
S307:判断息费豁免金额是否超出可豁免的金额,若是,则执行步骤S308,若否,则执行步骤S309。
S308:***抛出异常,对数据库事务进行回滚,删除缓存在本地的事务消息,返回执行步骤301。
S309:结束数据库事务。
以上为本申请实施例提供的基于消息驱动的事务处理的方法,基于同样的思路,本申请实施例提供了基于消息驱动的事务处理的装置,如图4所示。
图4为本申请实施例提供的基于消息驱动的事务处理的装置结构示意图,所述装置包括:
执行模块401,用于执行数据库事务,其中,所执行的数据库事务携带有执行状态;
监测模块402,用于监测执行所述数据库事务所产生的事务消息;
拦截模块403,用于拦截监测到的事务消息,并缓存在本地;
发送模块404,用于当所述数据库事务携带的执行状态为完成状态时,发送所缓存的事务消息。
所述装置还包括:
标记添加模块405,用于在执行模块401执行数据库事务之前,指定数据库事务,在指定的数据库事务内添加特定标记,监测携带有特定标记的数据库事务为待执行的数据库事务。
所述装置还包括:
回滚模块406,用于当所述数据库事务携带的执行状态为回滚状态时,删除缓存在本地内的事务消息。
所述事务消息持久化存储,所述数据库事务携带的执行状态持久化存储。
所述装置还包括:
失效模块407,用于在所述发送模块404发送所缓存的事务消息,或所述回滚模块406删除缓存在本地内的事务消息之后,将持久化存储的事务消息标记为失效。
所述装置还包括:
键值模块408,用于在所述执行模块401执行数据库事务之后,生成所执行的数据库事务对应的键值,建立所执行的数据库事务对应的键值、所执行的数据库事务生成的事务消息以及所执行的数据库事务对应的携带的执行状态三者之间的对应关系。
所述装置还包括:
返回接收模块409,用于当所述数据库事务携带的执行状态为完成状态时,所述发送模块404发送所缓存的事务消息之后,接收返回的所述数据库事务对应的事务消息,根据建立的所执行的数据库事务对应的键值、所执行的数据库事务生成的事务消息以及所执行的数据库事务对应的携带的执行状态三者之间的对应关系,将返回的所述数据库事务对应的事务消息与持久化存储的所述数据库事务对应的事务消息进行匹配,确定返回的所述数据库事务对应的事务消息是否已经存在,当未存在返回的所述数据库事务对应的事务消息时,执行返回的所述数据库事务对应的事务消息。
所述装置还包括:
检查模块410,用于根据建立的所执行的数据库事务对应的键值、所执行的数据库事务生成的事务消息以及所执行的数据库事务对应的携带的执行状态三者之间的对应关系,每隔预设的周期检查持久化存储的事务消息,根据持久化存储的数据库事务携带的执行状态,确定持久化存储的事务消息是否发送。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、***或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (16)
1.一种基于消息驱动的事务处理方法,其特征在于,所述方法包括:
执行数据库事务,其中,所执行的数据库事务携带有执行状态;
监测执行所述数据库事务所产生的事务消息;
拦截监测到的事务消息,并缓存在本地;
当所述数据库事务携带的执行状态为完成状态时,发送所缓存的事务消息。
2.如权利要求1所述的方法,其特征在于,在执行数据库事务之前,所述方法还包括:
指定数据库事务;
在指定的数据库事务内添加特定标记;
监测携带有特定标记的数据库事务为待执行的数据库事务。
3.如权利要求1所述的方法,其特征在于,所述方法还包括:
当所述数据库事务携带的执行状态为回滚状态时,删除缓存在本地内的事务消息。
4.如权利要求1~3任一所述的方法,其特征在于,所述事务消息持久化存储,所述数据库事务携带的执行状态持久化存储。
5.如权利要求4所述的方法,其特征在于,在发送所缓存的事务消息,或删除缓存在本地内的事务消息之后,所述方法还包括:
将持久化存储的事务消息标记为失效。
6.如权利要求4所述的方法,其特征在于,在执行数据库事务之后,所述方法还包括:
生成所执行的数据库事务对应的键值;
建立所执行的数据库事务对应的键值、所执行的数据库事务生成的事务消息以及所执行的数据库事务对应的携带的执行状态三者之间的对应关系。
7.如权利要求6所述的方法,其特征在于,当所述数据库事务携带的执行状态为完成状态时,发送所缓存的事务消息之后,所述方法还包括:
接收返回的所述数据库事务对应的事务消息,根据建立的所执行的数据库事务对应的键值、所执行的数据库事务生成的事务消息以及所执行的数据库事务对应的携带的执行状态三者之间的对应关系,将返回的所述数据库事务对应的事务消息与持久化存储的所述数据库事务对应的事务消息进行匹配,确定返回的所述数据库事务对应的事务消息是否已经存在;
当未存在返回的所述数据库事务对应的事务消息时,执行返回的所述数据库事务对应的事务消息。
8.如权利要求6所述的方法,其特征在于,所述方法还包括:
根据建立的所执行的数据库事务对应的键值、所执行的数据库事务生成的事务消息以及所执行的数据库事务对应的携带的执行状态三者之间的对应关系,每隔预设的周期检查持久化存储的事务消息;
根据持久化存储的数据库事务携带的执行状态,确定持久化存储的事务消息是否发送。
9.一种基于消息驱动的事务处理装置,其特征在于,所述装置包括:
执行模块,用于执行数据库事务,其中,所执行的数据库事务携带有执行状态;
监测模块,用于监测执行所述数据库事务所产生的事务消息;
拦截模块,用于拦截监测到的事务消息,并缓存在本地;
发送模块,用于当所述数据库事务携带的执行状态为完成状态时,发送所缓存的事务消息。
10.如权利要求9所述的装置,其特征在于,所述装置还包括:
标记添加模块,用于在执行模块执行数据库事务之前,指定数据库事务,在指定的数据库事务内添加特定标记,监测携带有特定标记的数据库事务为待执行的数据库事务。
11.如权利要求9所述的装置,其特征在于,所述装置还包括:
回滚模块,用于当所述数据库事务携带的执行状态为回滚状态时,删除缓存在本地内的事务消息。
12.如权利要求9~11任一所述的装置,其特征在于,所述事务消息持久化存储,所述数据库事务携带的执行状态持久化存储。
13.如权利要求12所述的装置,其特征在于,所述装置还包括:
失效模块,用于在所述发送模块发送所缓存的事务消息,或所述回滚模块删除缓存在本地内的事务消息之后,将持久化存储的事务消息标记为失效。
14.如权利要求12所述的装置,其特征在于,所述装置还包括:
键值模块,用于在所述执行模块执行数据库事务之后,生成所执行的数据库事务对应的键值,建立所执行的数据库事务对应的键值、所执行的数据库事务生成的事务消息以及所执行的数据库事务对应的携带的执行状态三者之间的对应关系。
15.如权利要求14所述的装置,其特征在于,所述装置还包括:
返回接收模块,用于当所述数据库事务携带的执行状态为完成状态时,所述发送模块发送所缓存的事务消息之后,接收返回的所述数据库事务对应的事务消息,根据建立的所执行的数据库事务对应的键值、所执行的数据库事务生成的事务消息以及所执行的数据库事务对应的携带的执行状态三者之间的对应关系,将返回的所述数据库事务对应的事务消息与持久化存储的所述数据库事务对应的事务消息进行匹配,确定返回的所述数据库事务对应的事务消息是否已经存在,当未存在返回的所述数据库事务对应的事务消息时,执行返回的所述数据库事务对应的事务消息。
16.如权利要求14所述的装置,其特征在于,所述装置还包括:
检查模块,用于根据建立的所执行的数据库事务对应的键值、所执行的数据库事务生成的事务消息以及所执行的数据库事务对应的携带的执行状态三者之间的对应关系,每隔预设的周期检查持久化存储的事务消息,根据持久化存储的数据库事务携带的执行状态,确定持久化存储的事务消息是否发送。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810735951.1A CN108958955A (zh) | 2018-07-06 | 2018-07-06 | 一种基于消息驱动的事务处理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810735951.1A CN108958955A (zh) | 2018-07-06 | 2018-07-06 | 一种基于消息驱动的事务处理方法及装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN108958955A true CN108958955A (zh) | 2018-12-07 |
Family
ID=64484323
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810735951.1A Pending CN108958955A (zh) | 2018-07-06 | 2018-07-06 | 一种基于消息驱动的事务处理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108958955A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110008224A (zh) * | 2019-03-08 | 2019-07-12 | 阿里巴巴集团控股有限公司 | 一种数据库事务处理方法及装置 |
CN112631741A (zh) * | 2020-12-09 | 2021-04-09 | 网宿科技股份有限公司 | 事务处理方法、设备及存储介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050262072A1 (en) * | 2004-05-21 | 2005-11-24 | Bea Systems, Inc. | System and method for batch operation of CMP beans |
CN103365873A (zh) * | 2012-03-28 | 2013-10-23 | 阿里巴巴集团控股有限公司 | 业务数据的推送方法及装置 |
CN103701783A (zh) * | 2013-12-17 | 2014-04-02 | 沈阳觉醒软件有限公司 | 一种预处理单元、由其构成的数据处理***以及处理方法 |
CN103761140A (zh) * | 2013-11-29 | 2014-04-30 | 北京中启智源数字信息技术有限责任公司 | 一种在异构关系型数据库中实现事务处理的方法 |
CN106293626A (zh) * | 2015-06-26 | 2017-01-04 | 英特尔公司 | 持久性提交处理器、方法、***和指令 |
CN106664254A (zh) * | 2014-08-21 | 2017-05-10 | 七网络有限责任公司 | 优化移动网络中的网络流量管理 |
CN106775959A (zh) * | 2016-12-06 | 2017-05-31 | 上海亿账通互联网科技有限公司 | 分布式事务处理方法和*** |
US9774661B1 (en) * | 2013-04-03 | 2017-09-26 | Amdocs Software Systems Limited | System, method, and computer program for processing interdependent transactions between a requesting system and a target system |
-
2018
- 2018-07-06 CN CN201810735951.1A patent/CN108958955A/zh active Pending
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050262072A1 (en) * | 2004-05-21 | 2005-11-24 | Bea Systems, Inc. | System and method for batch operation of CMP beans |
CN103365873A (zh) * | 2012-03-28 | 2013-10-23 | 阿里巴巴集团控股有限公司 | 业务数据的推送方法及装置 |
US9774661B1 (en) * | 2013-04-03 | 2017-09-26 | Amdocs Software Systems Limited | System, method, and computer program for processing interdependent transactions between a requesting system and a target system |
CN103761140A (zh) * | 2013-11-29 | 2014-04-30 | 北京中启智源数字信息技术有限责任公司 | 一种在异构关系型数据库中实现事务处理的方法 |
CN103701783A (zh) * | 2013-12-17 | 2014-04-02 | 沈阳觉醒软件有限公司 | 一种预处理单元、由其构成的数据处理***以及处理方法 |
CN106664254A (zh) * | 2014-08-21 | 2017-05-10 | 七网络有限责任公司 | 优化移动网络中的网络流量管理 |
CN106293626A (zh) * | 2015-06-26 | 2017-01-04 | 英特尔公司 | 持久性提交处理器、方法、***和指令 |
CN106775959A (zh) * | 2016-12-06 | 2017-05-31 | 上海亿账通互联网科技有限公司 | 分布式事务处理方法和*** |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110008224A (zh) * | 2019-03-08 | 2019-07-12 | 阿里巴巴集团控股有限公司 | 一种数据库事务处理方法及装置 |
CN110008224B (zh) * | 2019-03-08 | 2023-08-11 | 创新先进技术有限公司 | 一种数据库事务处理方法及装置 |
CN112631741A (zh) * | 2020-12-09 | 2021-04-09 | 网宿科技股份有限公司 | 事务处理方法、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11880494B2 (en) | Secure decentralized system utilizing smart contracts, a blockchain, and/or a distributed file system | |
KR102226257B1 (ko) | 서비스 데이터를 블록체인 시스템에 기입하기 위한 방법 및 디바이스 | |
US10536416B2 (en) | Intelligent message queue management | |
US10572685B1 (en) | Protecting sensitive data | |
TW202004584A (zh) | 基於區塊鏈的資料遷移方法和裝置 | |
US20160350360A1 (en) | System with multiple conditional commit databases | |
WO2008003617A1 (en) | Methods, apparatus and computer programs for managing persistence | |
CN105335143A (zh) | 一种业务处理方法及装置 | |
CN105243001A (zh) | 业务对象的异常告警方法和装置 | |
CN108958955A (zh) | 一种基于消息驱动的事务处理方法及装置 | |
US20220150065A1 (en) | Determining facet values for sensitive information in a data object to determine an encryption technique to encrypt the data object for backup | |
US20190347596A1 (en) | System for decommissioning information technology assets using solution data modelling | |
US11243979B1 (en) | Asynchronous propagation of database events | |
CN108776670A (zh) | 一种异地容灾方法、***和电子设备 | |
US20180225325A1 (en) | Application resiliency management using a database driver | |
CN113658003B (zh) | 基于区块链网络的交易方法、装置、设备及存储介质 | |
CN110610290A (zh) | 间联商户风险管控方法及其*** | |
US20150088729A1 (en) | Online property reservation service provider for reserving properties for lease | |
EP2601627B1 (en) | Transaction processing system and method | |
CN113971007B (zh) | 信息处理方法、装置、电子设备及介质 | |
CN115329733B (zh) | 报表统计方法、装置、计算机设备和存储介质 | |
KR102522910B1 (ko) | 프록시 방식의 서비스 지속성 보장 시스템 및 방법 | |
CN110430263B (zh) | 一种增值业务处理***及方法 | |
Tang et al. | Smart Contract Migration: Security Analysis and Recommendations from Ethereum to Arbitrum | |
CN116050850A (zh) | 一种基于风险轨迹的业务风险筛查方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20181207 |