[发明专利]一种基于消息驱动的事务处理方法及装置在审
申请号: | 201810735951.1 | 申请日: | 2018-07-06 |
公开(公告)号: | CN108958955A | 公开(公告)日: | 2018-12-07 |
发明(设计)人: | 贾英哲;汪洵潇 | 申请(专利权)人: | 美利车(北京)网络技术有限公司 |
主分类号: | G06F9/54 | 分类号: | G06F9/54;G06F17/30 |
代理公司: | 北京市天玺沐泽专利代理事务所(普通合伙) 11532 | 代理人: | 谢鑫 |
地址: | 100102 北京市朝阳*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 事务消息 数据库事务 事务处理 消息驱动 数据库 发送 缓存 事务消息缓存 完成状态 携带 完成时 监测 拦截 终端 撤销 申请 | ||
本申请公开了一种基于消息驱动的事务处理方法及装置,该方法包括:执行携带有执行状态的数据库事务,监测执行数据库事务所产生的事务消息,拦截监测到的事务消息,并缓存在本地,当数据库事务携带的执行状态为完成状态时,发送所缓存的事务消息。通过上述方法,由于将执行数据库所产生的各事务消息缓存到本地,当数据库事务完成时,再将缓存在本地的各事务消息发送出去,因此,即使终端在执行数据库事务的过程中某个操作发生了故障,也不会出现该操作之前所产生的事务消息无法撤销的情况。
技术领域
本申请涉及计算机技术领域,尤其涉及一种基于消息驱动的事务处理方法及装置。
背景技术
目前,为了提升终端或数据库业务处理效率,缓解终端或数据库的运行负载,通常使用基于消息驱动的分布式架构来处理数据库事务。
现有的基于消息驱动的分布式架构来处理数据库事务主要流程为:终端执行数据库事务,当执行数据库事务产生事务消息时,将所生成的事务消息发送给消息中间件,消息中间件将所接收的事务消息发送给客户端。
但是,在现有技术中,由于终端在执行数据库事务时某个操作发生了故障,该数据库事务会重新执行,因此,当终端在执行数据库事务的过程中某个操作发生了故障,就会导致在该操作之前向消息中间件所发送的事务消息无法撤销。
发明内容
本申请实施例提供一种基于消息驱动的事务处理方法及装置,用以解决现有技术中当终端在执行数据库事务的过程中某个操作发生了故障,就会导致在该操作之前向消息中间件所发送的事务消息无法撤销的问题。
本申请实施例提供的一种基于消息驱动的事务处理的方法,所述方法包括:
执行数据库事务,其中,所执行的数据库事务携带有执行状态;
监测执行所述数据库事务所产生的事务消息;
拦截监测到的事务消息,并缓存在本地;
当所述数据库事务携带的执行状态为完成状态时,发送所缓存的事务消息。
优选地,所述方法还包括:
在执行数据库事务之前,指定数据库事务;在指定的数据库事务内添加特定标记;监测携带有特定标记的数据库事务为待执行的数据库事务。
优选地,所述方法还包括:
当所述数据库事务携带的执行状态为回滚状态时,删除缓存在本地内的事务消息。
优选地,所述事务消息持久化存储,所述数据库事务携带的执行状态持久化存储。
优选地,所述方法还包括:
在发送所缓存的事务消息,或删除缓存在本地内的事务消息之后,将持久化存储的事务消息标记为失效。
优选地,所述方法还包括:
在执行数据库事务之后,生成所执行的数据库事务对应的键值;建立所执行的数据库事务对应的键值、所执行的数据库事务生成的事务消息以及所执行的数据库事务对应的携带的执行状态三者之间的对应关系。
优选地,所述方法还包括:
当所述数据库事务携带的执行状态为完成状态时,发送所缓存的事务消息之后,接收返回的所述数据库事务对应的事务消息,根据建立的所执行的数据库事务对应的键值、所执行的数据库事务生成的事务消息以及所执行的数据库事务对应的携带的执行状态三者之间的对应关系,将返回的所述数据库事务对应的事务消息与持久化存储的所述数据库事务对应的事务消息进行匹配,确定返回的所述数据库事务对应的事务消息是否已经存在;当未存在返回的所述数据库事务对应的事务消息时,执行返回的所述数据库事务对应的事务消息。
优选地,所述方法还包括:
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于美利车(北京)网络技术有限公司,未经美利车(北京)网络技术有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201810735951.1/2.html,转载请声明来源钻瓜专利网。