事务消息的处理方法、装置及电子设备与流程

文档序号:17535844发布日期:2019-04-29 13:58阅读:264来源:国知局
事务消息的处理方法、装置及电子设备与流程

本申请涉及计算机技术领域,尤其涉及一种事务消息的处理方法、装置及电子设备。



背景技术:

分布式事务系统通常包含客户端、资源管理器、事务协调器几个角色。客户端与资源管理器部署在应用侧;事务协调器独立部署,负责协调一个分布式事务从开始到完成的所有相关处理流程,是系统核心角色。

现有技术实现事务消息,通常是基于消息中间件的类似x/openxa的两阶段提交,把数据库本地事务和消息发送放在了一个分布式事务里,保证要么本地事务成功并且对外发消息成功,要么两者都失败。消息中间件提供的事务消息功能,需要用户在应用中写回查接口,并加一些业务逻辑来保存本地事务的执行状态和相应的清理逻辑。如图1所示,为事务消息的典型流程。图1中,应用发送预备消息到消息中间件,消息中间件保存预备消息,但是这个消息目前不可消费,也就是说别的应用或系统无法接收到这个消息;消息发送成功后,应用执行本地事务;待本地事务成功提交后,提交刚才发送的那个预备消息,此时消息可消费,其他接收者收到该消息后其业务继续推进。

如果上面某一步失败,应用可以回滚预备消息,逻辑比较简单,不在此详细分析。比较麻烦的是,应用在提交消息或回滚消息前宕机,消息中间件收到一个预备消息后,在超时前没收到应用发送的提交或回滚消息的指令。这时,消息中间件就需要用到应用提供的回查接口,在超时后调用该回查接口,得到应用本地的事务状态,如果事务执行成功则提交消息让消息可消费,如果事务执行失败则回滚预备消息。如图2所示,为相应的消息流程图。

现有技术缺陷总结:

1,现有技术实现事务消息比较复杂,用户需要在应用中增加业务逻辑,实现回查接口。回查接口要完成的工作是,当消息中间件输入一个消息id时,应用可返回消息id相应的数据库本地事务是否成功的状态消息。消息中间件以此为依据进行消息提交或回滚。

2,为了实现这样一个回查接口,需要应用持久化本地事务状态,以及事务与消息之间的对应关系,需要保证接口幂等,允许多次调用,不影响业务逻辑。在实际操作中,持久化的状态信息肯定不能堆积下去,需要清理,多长时间清理也是一个问题,因为需要确定消息中间件在此之后一定不会再回查这些事务状态。

3,一个应用中通常有多处事务消息,这就需要实现很多回查接口,给应用开发、维护、升级都带来很多复杂性。



技术实现要素:

本发明提供了一种事务消息的处理方法、装置及电子设备,能够摒弃在应用中额外设置回查接口所带来的麻烦,并且能够保证事务和消息处理上的一致性。

为达到上述目的,本发明的实施例采用如下技术方案:

第一方面,提供了一种事务消息的处理方法,包括:

向事务协调器发送用于开启全局事务的请求,获取本次全局事务的事务id和所包含的消息分支的id;

向消息中间件发送本次全局事务涉及的预备消息,并将从所述消息中间件接收的消息发送结果上报至所述事务协调器,以指示将所述消息发送结果与所述消息分支的分支id关联;

执行所述全局事务包含的各事务分支;

向所述事务协调器发送提交或回滚全局事务的请求,以根据所述事务协调器返回的指示,对所述全局事务所包含的各事务分支和消息分支进行提交或回滚。

第二方面,提供了另一种事务消息的处理方法,包括:

根据应用所发送的用于开启本次全局事务的请求,向所述应用返回所述本次全局事务的事务id和所包含的消息分支的id;

响应于所述应用上报的消息发送结果、以及将所述消息发送结果与所述消息分支的分支id关联的指示,执行关联操作;所述消息发送结果为所述应用向消息中间件发送本次全局事务涉及的预备消息后获得;

接收应用发送的提交或回滚全局事务的请求,以作为后续下发对所述全局事务所包含的各事务分支和消息分支进行相应的提交或回滚的指示的依据。

第三方面,提供了另一种事务消息的处理方法,包括:

接收事务协调器发送的消息分支的提交指示,所述提交指示中包含待提交的消息分支的消息发送结果;

根据待提交的消息分支的消息发送结果,向消息中间件提交该消息发送结果所对应的预备消息,并将提交成功的消息反馈至所述事务协调器;

接收事务协调器发送的事务分支的提交指示;

将所述全局事务中包含的各事务分支分别进行提交,并将提交成功的消息反馈至所述事务协调器。

第四方面,提供了一种事务消息的处理方法,包括:

向应用发送消息分支的提交指示,所述提交指示中包含待提交的消息分支的消息发送结果;

响应于所述应用反馈的针对消息分支的提交成功的消息,向所述应用发送所述全局事务包含的事务分支的提交指示;

响应于所述应用反馈的针对事务分支的提交成功的消息,向所述应用发送针对本次全局事务提交成功的消息。

第五方面,提供了另一种事务消息的处理方法,包括:

接收事务协调器发送的消息分支的回滚指示,所述回滚指示中包含待回滚的消息分支的消息发送结果;

根据待回滚的消息分支的消息发送结果,向消息中间件回滚该消息发送结果所对应的预备消息,并将回滚成功的消息反馈至所述事务协调器;

接收事务协调器发送的事务分支的回滚指示;

将所述全局事务中包含的各事务分支分别进行回滚,并将回滚成功的消息反馈至所述事务协调器。

第六方面,提供了另一种事务消息的处理方法,包括:

向应用发送消息分支的回滚指示,所述回滚指示中包含待回滚的消息分支的消息发送结果;

向所述应用发送所述全局事务包含的事务分支的回滚指示;

响应于所述应用反馈的所述全局事务所包含的各消息分支和事务分支的回滚成功的消息,向所述应用发送针对本次全局事务回滚成功的消息。

第七方面,提供了一种事务消息的处理装置,包括:

全局事务请求模块,用于向事务协调器发送用于开启全局事务的请求,获取本次全局事务的事务id和所包含的消息分支的id;

消息分支预备模块,用于向消息中间件发送本次全局事务涉及的预备消息,并将从所述消息中间件接收的消息发送结果上报至所述事务协调器,以指示将所述消息发送结果与所述消息分支的分支id关联;

事务分支执行模块,用于执行所述全局事务包含的各事务分支;

全局事务上报模块,用于向所述事务协调器发送提交或回滚全局事务的请求,以根据所述事务协调器返回的指示,对所述全局事务所包含的各事务分支和消息分支进行提交或回滚。

第八方面,提供了另一种事务消息的处理装置,包括:

全局事务受理模块,用于根据应用所发送的用于开启本次全局事务的请求,向所述应用返回所述本次全局事务的事务id和所包含的消息分支的id;

消息分支关联模块,用于响应于所述应用上报的消息发送结果、以及将所述消息发送结果与所述消息分支的分支id关联的指示,执行关联操作;所述消息发送结果为所述应用向消息中间件发送本次全局事务涉及的预备消息后获得;

全局事务汇总模块,用于接收应用发送的提交或回滚全局事务的请求,以作为后续下发对所述全局事务所包含的各事务分支和消息分支进行相应的提交或回滚的指示的依据。

第九方面,提供了另一种事务消息的处理装置,包括:

消息提交接收模块,用于接收事务协调器发送的消息分支的提交指示,所述提交指示中包含待提交的消息分支的消息发送结果;

消息提交处理模块,用于根据待提交的消息分支的消息发送结果,向消息中间件提交该消息发送结果所对应的预备消息,并将提交成功的消息反馈至所述事务协调器;

事务提交接收模块,用于接收事务协调器发送的事务分支的提交指示;

事务提交处理模块,用于将所述全局事务中包含的各事务分支分别进行提交,并将提交成功的消息反馈至所述事务协调器。

第十方面,提供了另一种事务消息的处理装置,包括:

消息提交指示模块,用于向应用发送消息分支的提交指示,所述提交指示中包含待提交的消息分支的消息发送结果;

事务提交指示模块,用于响应于所述应用反馈的针对消息分支的提交成功的消息,向所述应用发送所述全局事务包含的事务分支的提交指示;

提交成功处理模块,用于响应于所述应用反馈的针对事务分支的提交成功的消息,向所述应用发送针对本次全局事务提交成功的消息。

第十一方面,提供了另一种事务消息的处理装置,包括:

消息回滚接收模块,用于接收事务协调器发送的消息分支的回滚指示,所述回滚指示中包含待回滚的消息分支的消息发送结果;

消息回滚处理模块,用于根据待回滚的消息分支的消息发送结果,向消息中间件回滚该消息发送结果所对应的预备消息,并将回滚成功的消息反馈至所述事务协调器;

事务回滚接收模块,用于接收事务协调器发送的事务分支的回滚指示;

事务回滚处理模块,用于将所述全局事务中包含的各事务分支分别进行回滚,并将回滚成功的消息反馈至所述事务协调器。

第十二方面,提供了另一种事务消息的处理装置,包括:

消息回滚指示模块,用于向应用发送消息分支的回滚指示,所述回滚指示中包含待回滚的消息分支的消息发送结果;

事务回滚指示模块,用于向所述应用发送所述全局事务包含的事务分支的回滚指示;

回滚成功处理模块,用于响应于所述应用反馈的所述全局事务所包含的各消息分支和事务分支的回滚成功的消息,向所述应用发送针对本次全局事务回滚成功的消息。

第十三方面,提供了一种电子设备,包括:

存储器,用于存储程序;

处理器,耦合至所述存储器,用于执行所述程序,以用于:

向事务协调器发送用于开启全局事务的请求,获取本次全局事务的事务id和所包含的消息分支的id;

向消息中间件发送本次全局事务涉及的预备消息,并将从所述消息中间件接收的消息发送结果上报至所述事务协调器,以指示将所述消息发送结果与所述消息分支的分支id关联;

执行所述全局事务包含的各事务分支;

向所述事务协调器发送提交或回滚全局事务的请求,以根据所述事务协调器返回的指示,对所述全局事务所包含的各事务分支和消息分支进行提交或回滚。

第十四方面,提供了另一种电子设备,包括:

存储器,用于存储程序;

处理器,耦合至所述存储器,用于执行所述程序,以用于:

根据应用所发送的用于开启本次全局事务的请求,向所述应用返回所述本次全局事务的事务id和所包含的消息分支的id;

响应于所述应用上报的消息发送结果、以及将所述消息发送结果与所述消息分支的分支id关联的指示,执行关联操作;所述消息发送结果为所述应用向消息中间件发送本次全局事务涉及的预备消息后获得;

接收应用发送的提交或回滚全局事务的请求,以作为后续下发对所述全局事务所包含的各事务分支和消息分支进行相应的提交或回滚的指示的依据。

第十五方面,提供了另一种电子设备,包括:

存储器,用于存储程序;

处理器,耦合至所述存储器,用于执行所述程序,以用于:

接收事务协调器发送的消息分支的提交指示,所述提交指示中包含待提交的消息分支的消息发送结果;

根据待提交的消息分支的消息发送结果,向消息中间件提交该消息发送结果所对应的预备消息,并将提交成功的消息反馈至所述事务协调器;

接收事务协调器发送的事务分支的提交指示;

将所述全局事务中包含的各事务分支分别进行提交,并将提交成功的消息反馈至所述事务协调器。

第十六方面,提供了另一种电子设备,包括:

存储器,用于存储程序;

处理器,耦合至所述存储器,用于执行所述程序,以用于:

向应用发送消息分支的提交指示,所述提交指示中包含待提交的消息分支的消息发送结果;

响应于所述应用反馈的针对消息分支的提交成功的消息,向所述应用发送所述全局事务包含的事务分支的提交指示;

响应于所述应用反馈的针对事务分支的提交成功的消息,向所述应用发送针对本次全局事务提交成功的消息。

第十七方面,提供了另一种电子设备,包括:

存储器,用于存储程序;

处理器,耦合至所述存储器,用于执行所述程序,以用于:

接收事务协调器发送的消息分支的回滚指示,所述回滚指示中包含待回滚的消息分支的消息发送结果;

根据待回滚的消息分支的消息发送结果,向消息中间件回滚该消息发送结果所对应的预备消息,并将回滚成功的消息反馈至所述事务协调器;

接收事务协调器发送的事务分支的回滚指示;

将所述全局事务中包含的各事务分支分别进行回滚,并将回滚成功的消息反馈至所述事务协调器。

第十八方面,提供了另一种电子设备,包括:

存储器,用于存储程序;

处理器,耦合至所述存储器,用于执行所述程序,以用于:

向应用发送消息分支的回滚指示,所述回滚指示中包含待回滚的消息分支的消息发送结果;

向所述应用发送所述全局事务包含的事务分支的回滚指示;

响应于所述应用反馈的所述全局事务所包含的各消息分支和事务分支的回滚成功的消息,向所述应用发送针对本次全局事务回滚成功的消息。

本发明提供的事务消息的处理方法、装置及电子设备,在现有分布式事务管理系统中,将事务消息也作为应用索要管理的一种资源,并针对这种资源提供了一种满足2pc模式的事务管理方案,即在一个全局事务中,将该全局事务所涉及的事务消息作为全局事务本身的消息分支,并与原有的事务分支一起构成一个完整的分布式事务。将应用向消息中间件发送预备消息的行为作为2pc模式中的一阶段的消息分支的内容;当全局事务中的各事务分支和消息分支均执行成功后,应用可向事务协调器请求提交全局事务,然后根据事务协调器返回的提交指示提交事务分支和消息分支,其中消息分支的提交是指,应用提交之前发给消息中间件的预备消息,使该消息能被消费;当全局事务中的各事务分支和消息分支中存在未执行成功的分支,应用可向事务协调器请求回滚全局事务,然后根据事务协调器返回的回滚指示回滚事务分支和消息分支。其中消息分支的回滚是指,应用回滚之前发给消息中间件的预备消息,使该消息在消息中间件中被丢弃。当然,当事务协调器在指定时长内没有收到应用发送的提交或回滚全局事务时,直接判定全局事务执行失败,并向应用返回回滚全局事务的指令。本方案能够摒弃在应用中因额外设置回查接口所带来的麻烦,并且能够保证事务和消息处理上的一致性。

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

附图说明

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

图1为现有技术中的事务消息的处理逻辑示意图一;

图2为现有技术中的事务消息的处理逻辑示意图二;

图3为本发明实施例的事务消息的处理逻辑示意图一;

图4为本发明实施例的事务消息的处理逻辑示意图二;

图5为本发明实施例的事务消息的处理方法流程图一;

图6为本发明实施例的事务消息的处理方法流程图二;

图7为本发明实施例的事务消息的处理方法流程图三;

图8为本发明实施例的事务消息的处理方法流程图四;

图9为本发明实施例的事务消息的处理方法流程图五;

图10为本发明实施例的事务消息的处理方法流程图六;

图11a为本发明实施例的事务消息的处理装置结构图一;

图11b为本发明实施例的全局事务请求模块的结构图;

图12a为本发明实施例的事务消息的处理装置结构图二;

图12b为本发明实施例的全局事务受理模块的结构图;

图13为本发明实施例的事务消息的处理装置结构图三;

图14为本发明实施例的事务消息的处理装置结构图四;

图15为本发明实施例的事务消息的处理装置结构图五;

图16为本发明实施例的事务消息的处理装置结构图六;

图17为本发明实施例的电子设备的结构示意图一;

图18为本发明实施例的电子设备的结构示意图二;

图19为本发明实施例的电子设备的结构示意图三;

图20为本发明实施例的电子设备的结构示意图四;

图21为本发明实施例的电子设备的结构示意图五;

图22为本发明实施例的电子设备的结构示意图六。

具体实施方式

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

本方案改善了现有技术中,因处理分布式事务和发送事务消息为两个相互独立的步骤流程,从而需要在应用中额外设置回查接口,才能保证执行事务和发送事务消息的操作相一致的缺陷,其核心思想为,在沿用现有技术中的系统架构的基础上,对系统中的各执行主体的操作行为进行改动,将事务消息作为与其关联的全局事务中的一个类似事务分支来处理,使其满足分布式事务的2pc的处理模式,从而在引入较大的开发成本的基础上,保证事务处理和消息处理的一致性。

如图3所示,为本发明实施例提供的事务消息的处理逻辑示意图一,该处理逻辑对应于事务消息在一个完整的2pc阶段的成功提交过程。

步骤1,应用向事务协调器请求开启全局事务;

步骤2,事务协调器分配给应用一个全局事务标识xid;该xid的结构中包括:事务协调器ip、事务协调器端口以及事务唯一id;

步骤3,应用根据xid,构建当前全局事务的事务上下文,包括负责处理这个事务的事务协调器ip、事务协调器端口,及事务唯一id;

步骤4,应用根据事务上下文信息,向事务协调器发起注册一个事务分支的请求。

步骤5,事务协调器分配给应用一个分支id,成为全局事务的第一个分支,该分支id用于关联事务消息的;

步骤6,应用发送预备消息到消息中间件;

步骤7,消息中间件返回一个“消息发送结果”;

步骤8,应用将“消息发送结果”转化为json串,并上报到事务协调器,以指示将json串与分支id关联;

步骤9,事务协调器向应用返回一个上报成功的消息;

步骤10,应用执行数据库本地事务。对于事务上下文的数据库操作,都会由资源管理器进行处理,并生成数据库操作的前后镜像并且保存到本地存储表中,应用根据事务上下文的信息与事务协调器进行交互,数据库本地事务成为全局事务的第二个分支。

步骤11,应用提交全局事务,事务处理的一阶段完成。

步骤12,事务协调器发起二阶段提交。首先,事务协调器对上述分支一发起二阶段提交,把分支一对应的json串作为userdata传给资源管理器;

步骤13,应用根据json串得到消息id并向消息中间件提交消息(应用进程在这个例子中既充当客户端,又充当资源管理器);

步骤14,应用接到消息中间件返回的提交消息分支成功的信息;

步骤15,应用向事务协调器返回消息提交成功的消息;

步骤16,事务协调器接着处理分支二的二阶段提交,向应用发送提交事务分支的指示;

步骤17,应用收到提交指示后,清理存储表中该分支对应的镜像记录;

步骤18,应用向事务协调器返回事务分支提交成功的消息;

步骤19,事务协调器判断所有分支已经完成,向应用返回“全局提交成功”。

如图4所示,为本发明实施例提供的事务消息的处理逻辑示意图二,该处理逻辑对应于事务消息在一个完整的2pc阶段,因全局事务超时,而成功回滚的过程。

图4中,步骤1~步骤10与图3中全局事务提交的一阶段内容相同,只是二阶段处理过程不同。以下将从步骤11开始进行接续说明。

步骤11,事务协调器判断全局事务超时(应用并没有按规定期限提交全局事务),发起全局回滚。

步骤12,首先,事务协调器向应用发事务回滚指示,对分支二发起二阶段回滚(提交按照分支正序提交,回滚按照分支倒序回滚);

步骤13,应用收到回滚指示后,根据存储表中存储的各事务分支对应的前后镜像信息完成回滚;

步骤14,应用向事务协调器返回事务分支回滚成功的消息;

步骤15,事务协调器接着向应用发消息回滚指示,对分支一发起二阶段回滚,把分支一对应的json串作为userdata传给资源管理器;

步骤16,应用根据json串得到消息id并向消息中间件发送消息回滚指示;

步骤17,消息中间件对预备消息进行回滚,并向应用发送回滚消息成功的信息;

步骤18,应用向事务协调器发送分支一的二阶段处理回滚成功消息;

步骤19,事务协调器判断所有分支已经回滚完成,清理全局事务信息。

另外,当应用执行完成本地事务分支和消息分支的操作时,如果存在一个分支操作失败,则应用可向事务协调器提交回滚全局事务的请求,并根据事务协调器返回的回滚指示,对事务分支和消息分支进行回滚,

下面通过多个实施例来进一步说明本申请的技术方案。

实施例一

基于上述在一个分布式事务操作中处理事务消息的方案思想,如图5所示,其为本发明实施例示出的事务消息的处理方法流程图一,该方法的执行主为图3或图4中所示的应用,其主要涉及了事务消息在分布式事务操作模式中的2pc阶段的一阶段的处理流程。如图5所示,该事务消息的处理方法包括如下步骤:

s510,向事务协调器发送用于开启全局事务的请求,获取本次全局事务的事务id和所包含的消息分支的id。

首先,应用可向事务协调器发送用于开启本次全局事务的请求,并从事务协调器获取本次全局事务对应的事务id。

具体地,客户端欲发起一个分布式事务,会先向事务协调器声明开启分布式事务,然后从事务协调器获取一个全局事务的事务id,以在整个分布式事务操作中对本次分布式事务进行标识。客户端向本次全局事务涉及的各个资源数据库的资源管理器发起相应的事务请求,各事务请求中会携带各事务所属的全局事务的事务id,以使各资源管理器根据事务请求执行相应的事务操作。

本实施例中的全局事务还包括针对事务消息的操作,该事务消息为本次分布式事务操作所涉及的事务消息。

然后,应用可根据事务id,向事务协调器发送注册消息分支的请求,并从事务协调器获取本次全局事务所包含的消息分支的分支id;

具体地,应用会根据事务id构建本次全局事务的上下文,用以限定本次全局事务的边界。

为了让分布式事务涉及的事务消息作为全局事务的分支,本实施例中,需要应用额外将事务消息的操作注册到全局事务中,从而让事务协调器对其在全局事务中进行管理。

具体地,应用会为本次分布式事务涉及的各事务消息,向事务协调器分别发送注册消息分支的请求,以在事务协调器侧注册用于其管理事务消息的消息分支,并从事务协调器获取本次全局事务所包含的各消息分支的分支id,以作为各事务消息的标识。

s520,向消息中间件发送本次全局事务涉及的预备消息,并将从消息中间件接收的消息发送结果上报至事务协调器,以指示将消息发送结果与消息分支的分支id关联;

在获取到全局事务所包含的消息分支的分支id后,应用需要将该分支id与具体的事务消息进行关联。具体地,应用可先向消息中间件发送预备消息,该预备消息暂时不能被消费,即其他应用或系统不能获取到该预备消息。消息中间件接收到该预备消息后,会返回给应用一个“消息发送结果”以作为本次预备消息成功发送的标志。应用将该“消息发送结果”作为一个消息分支的内容标识上报给事务协调器,并指示事务协调器将该“消息发送结果”与之前注册的消息分支的分支id进行关联,从而实现将事务消息真正的注册到事务协调器所维护管理的全局事务中。

进一步地,应用在将从消息中间件接收的消息发送结果上报至事务协调器的处理过程中,可将从消息中间件接收的消息发送结果的具体信息转换为json(javascriptobjectnotation,一种轻量级的数据交换格式)字符串,并上报至事务协调器,从而减少交互信息对网络的资源消耗。

s530,执行全局事务包含的各事务分支;

本步骤与现有技术中执行事务分支操作的步骤基本相同,即应用侧的资源管理器在接收到客户端发送的业务请求后,从业务请求中提取出上述事务id,并发送至事务协调器,以向事务协调器中注册自己,声明本次事务为上述全局事务中的一个事务分支。事务协调器收到该事务id后,给该事务分支分配一个事务分支id,以标识该事务分支所属于上述全局事务,并将事务分支id返回给资源管理器。资源管理器接到该事务分支id后,将其作为当前事务分支的标识在本地进行注册。

资源管理器在全局事务的上下文中执行本地的各事务分支对应的数据库操作。同时,针对每个数据库操作,资源管理器都会记录数据库操作的前后镜像,并保存至本地存储表中。

s540,向事务协调器发送提交或回滚全局事务的请求,以根据事务协调器返回的指示,对全局事务所包含的各事务分支和消息分支进行提交或回滚;

其中,对消息分支进行提交或回滚的操作为向消息中间件提交或回滚预备消息。

当全局事务所包含的所有消息分支和事务分支都已在应用侧执行成功后,应用会向事务协调器发送提交本次全局事务的请求;当全局事务所包含的所有消息分支和事务分支中存在至少一个分支执行失败,应用会向事务协调器发送回滚本次全局事务的请求。至此,涉及消息分支参与的分布式事务操作的2pc模式的一阶段执行完成。应用将根据事务协调器返回的提交或回滚的指示,进入到2pc模式的二阶段执行的过程中。

这里需要说明的是,所谓的对消息分支进行提交或回滚的操作为,应用可向消息中间件提交或回滚预备消息。其中,提交预备消息是指让预备消息变成可消费状态,回滚预备消息是指让消息中间件在本地清除该预备消息。

本发明实施例的事务消息的处理方法,以应用作为执行主体,将事务消息作为全局事务的一个消息分支,向事务协调器进行注册;并将消息分支与执行发送预备消息操作的消息发送结果进行关联,以真正将事务消息注册到事务协调器所维护管理的全局事务中;在执行完成全局事务所包含的各事务分支和消息分支后,根据执行的成功或失败的结果,向事务协调器发送全局事务的提交或回滚请求,以根据事务协调器返回的指示,对全局事务所包含的各事务分支和消息分支进行提交或回滚。本方案实现了事务消息在分布式事务操作模式中的2pc阶段的一阶段的处理流程。

实施例二

基于上述在一个分布式事务操作中处理事务消息的方案思想,如图6所示,其为本发明实施例示出的事务消息的处理方法流程图二,该方法的执行主为图3或图4中所示的事务协调器,其主要涉及了事务消息在分布式事务操作模式中的2pc阶段的一阶段的处理流程。如图6所示,该事务消息的处理方法包括如下步骤:

s610,根据应用所发送的用于开启本次全局事务的请求,向应用返回本次全局事务的事务id和所包含的消息分支的id;

首先,事务协调器可根据应用所发送的用于开启本次全局事务的请求,向应用返回本次全局事务的事务id;

具体地,客户端欲发起一个分布式事务,会先向事务协调器声明开启分布式事务,事务协调器接收到应用发送的用于开启本次全局事务的请求后,向其返回本次全局事务的事务id,以在维护管理整个分布式事务操作中对本次分布式事务进行标识。同时,客户端在获取到该全局事务的事务id后,向本次全局事务涉及的各个资源数据库的资源管理器发起相应的事务请求,各事务请求中会携带各事务所属的全局事务的事务id,以使各资源管理器根据事务请求执行相应的事务操作。

本实施例中的全局事务还包括针对事务消息的操作,该事务消息为本次分布式事务操作所涉及的事务消息。

然后,事务协调器响应于应用根据事务id发送的注册消息分支的请求,并向应用返回本次全局事务所包含的消息分支的分支id;

应用根据事务id构建本次全局事务的上下文,用以限定本次全局事务的边界。

同时,为了让分布式事务涉及的事务消息作为全局事务的分支,本实施例中,应用会额外将事务消息的操作注册到全局事务中,从而让事务协调器对其在全局事务中进行管理。

具体地,应用会为本次分布式事务涉及的各事务消息,向事务协调器分别发送注册消息分支的请求,以在事务协调器侧注册用于事务协调器管理事务消息的消息分支。事务协调器接收到该用于注册消息分支的请求后,向本次全局事务所包含的各消息分支分配相应的分支id,并发送给应用,以作为各事务消息的标识。

s620,响应于应用上报的消息发送结果、以及将消息发送结果与消息分支的分支id关联的指示,执行关联操作;该消息发送结果为应用向消息中间件发送本次全局事务涉及的预备消息后获得;

应用在获取到全局事务所包含的消息分支的分支id后,将该分支id与具体的事务消息进行关联。

具体地,应用先向消息中间件发送预备消息,该预备消息暂时不能被消费,即其他应用或系统不能获取到该预备消息。消息中间件接收到该预备消息后,返回给应用一个“消息发送结果”以作为本次预备消息成功发送的标志。应用将该“消息发送结果”作为一个消息分支的内容标识上报给事务协调器,并指示事务协调器将该“消息发送结果”与之前注册的消息分支的分支id进行关联。事务协调器接收到该指示后,执行相应的关联操作,从而将事务消息注册到事务协调器所维护管理的全局事务中。

进一步地,应用在将从消息中间件接收的消息发送结果上报至事务协调器的处理过程中,可将从消息中间件接收的消息发送结果的具体信息转换为json字符串,并上报至事务协调器,从而减少交互信息对网络的资源消耗。

s630,接收应用发送的提交或回滚全局事务的请求,以作为后续下发对全局事务所包含的各事务分支和消息分支进行相应的提交或回滚的指示的依据;

当全局事务所包含的所有消息分支和事务分支都已在应用侧执行成功后,事务协调器会接收到应用发送的提交本次全局事务的请求;当全局事务所包含的所有消息分支和事务分支中存在至少一个分支执行失败,事务协调器会接收到应用发送的回滚本次全局事务的请求。至此,涉及消息分支参与的分布式事务操作的2pc模式的一阶段执行完成。事务协调器会根据请求的具体内容,下发提交或回滚的指示给应用,以进入到2pc模式的二阶段执行的过程中。

这里需要说明的是,所谓的对消息分支进行提交或回滚的操作为,应用可向消息中间件提交或回滚预备消息。其中,提交预备消息是指让预备消息变成可消费状态,回滚预备消息是指让消息中间件在本地清除该预备消息。

本发明实施例的事务消息的处理方法,以事务协调器作为执行主体,将事务消息作为全局事务的一个消息分支,在本地进行注册;并将消息分支与执行发送预备消息操作的消息发送结果进行关联,以真正将事务消息注册到全局事务中;在应用执行完成全局事务所包含的各事务分支和消息分支后,接收应用根据执行的成功或失败的结果而发送的全局事务的提交或回滚请求,并以此作为对全局事务所包含的各事务分支和消息分支下发提交或回滚指示的依据。本方案实现了事务消息在分布式事务操作模式中的2pc阶段的一阶段的处理流程。

实施例三

基于上述在一个分布式事务操作中处理事务消息的方案思想,如图7所示,其为本发明实施例示出的事务消息的处理方法流程图三,该方法的执行主为图3或图4中所示的应用,其主要涉及了事务消息在分布式事务操作模式中的2pc阶段的二阶段的处理流程。如图7所示,该事务消息的处理方法包括如下步骤:

s710,接收事务协调器发送的消息分支的提交指示,提交指示中包含待提交的消息分支的消息发送结果;

其中,该提交指示为事务协调器在接收到消息分支所在的全局事务被请求提交后发出的;消息发送结果为应用向消息中间件发送本次全局事务涉及的预备消息后获得,并发送至事务协调器的。

其中,关于一个全局事务中消息分支的一阶段的执行过程可参见实施例一或实施例二所示内容。当事务协调器在一阶段接收到应用发送的提交全局事务的请求后,会先指示应用对全局事务中的消息分支进行提交,在下发的提交指示中包含待提交的消息分支对应的消息发送结果。该消息发送结果是应用在一阶段执行过程中,向消息中间件发送本次全局事务涉及的预备消息后获得,并发送至事务协调器的。事务协调器将该消息发送结果与之前分配给全局事务的消息分支的分支id进行关联后存储在本地。

进一步地,应用在一阶段可将从消息中间件接收的消息发送结果的具体信息转换为json字符串,并上报至事务协调器,从而减少交互信息对网络的资源消耗。相应地,应用在提取出关于消息分支的提交指示中的json字符串后,还需要将该字符串与原始的消息发送结果进行对应后,才能锁定指定的预备消息内容。

s720,根据待提交的消息分支的消息发送结果,向消息中间件提交该消息发送结果所对应的预备消息,并将提交成功的消息反馈至事务协调器;

应用在接收到事务协调器发送的消息分支的提交指示后,提取出该指示信息中包含的消息分支的消息发送结果,并根据结果在本地查找相应的预备消息的内容,如预备消息的消息id。然后利用消息id向消息中间件提交该消息发送结果所对应的预备消息,以使得该预备消息可消费。当消息提交成功后,将提交成功的消息反馈至事务协调器,以通知事务协调器可以进行后续操作。

s730,接收事务协调器发送的事务分支的提交指示;

其中,提交指示为事务协调器在接收到事务分支所在的全局事务被请求提交后发出的。

事务协调器在接收到消息分支提交成功的消息后,继续对全局事务中的事务分支进行提交,即向应用发送事务分支的提交指示。

s740,将全局事务中包含的各事务分支分别进行提交,并将提交成功的消息反馈至事务协调器;

应用接收到事务协调器发出的事务分支的提交指示后,将本地的事务分支依次提交,即将之前针对各事务操作所生成的操作镜像从本地存储表中清除。待提交完成后,应用向事务协调器发送事务分支的提交成功的消息,以通知事务协调器可以进行后续操作。

事务协调器接收到该消息后,可以将本地存储的本次全局事务的相关设置和信息清除,然后通知应用本次全局事务提交成功,应用可以继续执行其他事务操作。

本发明实施例的事务消息的处理方法,以应用作为执行主体,在接收到事务协调发出的对消息分支进行提交的指示后,向消息中间件提交之前已发送的预备消息;然后,再根据事务协调器下发的事务分支的提交指示,对本地的事务分支依次进行提交。本方案实现了事务消息在分布式事务操作模式中的2pc阶段的二阶段(提交)的处理流程。

实施例四

基于上述在一个分布式事务操作中处理事务消息的方案思想,如图8所示,其为本发明实施例示出的事务消息的处理方法流程图四,该方法的执行主为图3或图4中所示的事务协调器,其主要涉及了事务消息在分布式事务操作模式中的2pc阶段的二阶段的处理流程。如图8所示,该事务消息的处理方法包括如下步骤:

s810,向应用发送消息分支的提交指示,提交指示中包含待提交的消息分支的消息发送结果;

其中,提交指示为事务协调器在接收到消息分支所在的全局事务被请求提交后发出的;消息发送结果为应用向消息中间件发送本次全局事务涉及的预备消息后获得,并发送至事务协调器的。

其中,关于一个全局事务中消息分支的一阶段的执行过程可参见实施例一或实施例二所示内容。当事务协调器在一阶段接收到应用发送的提交全局事务的请求后,会先指示应用对全局事务中的消息分支进行提交,在下发的提交指示中包含待提交的消息分支对应的消息发送结果。该消息发送结果是应用在一阶段执行过程中,向消息中间件发送本次全局事务涉及的预备消息后获得,并发送至事务协调器的。事务协调器将该消息发送结果与之前分配给全局事务的消息分支的分支id进行关联后存储在本地。

s820,响应于应用反馈的针对消息分支的提交成功的消息,向应用发送全局事务包含的事务分支的提交指示;

应用在接收到事务协调器发送的消息分支的提交指示后,提取出该指示信息中包含的消息分支的消息发送结果,并根据结果在本地查找相应的预备消息的内容,如预备消息的消息id。然后利用消息id向消息中间件提交该消息发送结果所对应的预备消息,以使得该预备消息可消费。当消息提交成功后,将提交成功的消息反馈至事务协调器,事务协调器接到该通知后,继续向应用发送全局事务包含的事务分支的提交指示,以指示应用对本地的事务分支进行提交操作。

s830,响应于应用反馈的针对事务分支的提交成功的消息,向应用发送针对本次全局事务提交成功的消息;

应用接收到事务协调器发出的事务分支的提交指示后,将本地的事务分支依次提交,即将之前针对各事务操作所生成的操作镜像从本地存储表中清除。待提交完成后,应用向事务协调器发送事务分支的提交成功的消息,以通知事务协调器可以进行后续操作。

事务协调器接收到该消息后,可以将本地存储的本次全局事务的相关设置和信息清除,然后通知应用本次全局事务提交成功,应用可以继续执行其他事务操作。

本发明实施例的事务消息的处理方法,以事务协调器作为执行主体,在一阶段接收到应用发送的全局事务的提交请求后,先向应用发出对消息分支进行提交的指示,待接收到应用反馈的成功提交的信息后,再向应用下发事务分支的提交指示从而保证事务消息和本地数据库操作的一致性。本方案实现了事务消息在分布式事务操作模式中的2pc阶段的二阶段(提交)的处理流程。

实施例五

基于上述在一个分布式事务操作中处理事务消息的方案思想,如图9所示,其为本发明实施例示出的事务消息的处理方法流程图五,该方法的执行主为图3或图4中所示的应用,其主要涉及了事务消息在分布式事务操作模式中的2pc阶段的二阶段的处理流程。如图9所示,该事务消息的处理方法包括如下步骤:

s910,接收事务协调器发送的消息分支的回滚指示,回滚指示中包含待回滚的消息分支的消息发送结果;

其中,回滚指示为事务协调器在接收到消息分支所在的全局事务被请求回滚后发出的,或者由事务协调器判定全局事务超时后发出的;消息发送结果为应用向消息中间件发送本次全局事务涉及的预备消息后获得,并发送至事务协调器的。

其中,关于一个全局事务中消息分支的一阶段的执行过程可参见实施例一或实施例二所示内容。当事务协调器在一阶段接收到应用发送的回滚全局事务的请求后,或者事务协调协调器判断当前全局事务超时后,事务协调器会先指示应用对全局事务中的消息分支进行回滚,在下发的回滚指示中包含待提交的消息分支对应的消息发送结果。该消息发送结果是应用在一阶段执行过程中,向消息中间件发送本次全局事务涉及的预备消息后获得,并发送至事务协调器的。事务协调器将该消息发送结果与之前分配给全局事务的消息分支的分支id进行关联后存储在本地。

进一步地,应用在一阶段可将从消息中间件接收的消息发送结果的具体信息转换为json字符串,并上报至事务协调器,从而减少交互信息对网络的资源消耗。相应地,应用在提取出关于消息分支的回滚指示中的json字符串后,还需要将该字符串与原始的消息发送结果进行对应后,才能锁定指定的预备消息内容。

s920,根据待回滚的消息分支的消息发送结果,向消息中间件回滚该消息发送结果所对应的预备消息,并将回滚成功的消息反馈至事务协调器;

应用在接收到事务协调器发送的消息分支的回滚指示后,提取出该指示信息中包含的消息分支的消息发送结果,并根据结果在本地查找相应的预备消息的内容,如预备消息的消息id。然后利用消息id向消息中间件回滚该消息发送结果所对应的预备消息,例如,让消息中间件删除该预备消息,以使得该预备消息永远不可消费。当消息回滚成功后,将回滚成功的消息反馈至事务协调器,以通知事务协调器可以进行后续操作。

s930,接收事务协调器发送的事务分支的回滚指示;

其中,回滚指示为事务协调器在接收到事务分支所在的全局事务被请求回滚后发出的。

事务协调器在接收到消息分支回滚成功的消息后,继续对全局事务中的事务分支进行回滚,即向应用发送事务分支的回滚指示。

s940,将全局事务中包含的各事务分支分别进行回滚,并将回滚成功的消息反馈至事务协调器;

应用接收到事务协调器发出的事务分支的回滚指示后,将本地的事务分支依次回滚,即根据之前针对各事务操作所生成的操作镜像将本地的数据库操作设置为失效,使其回滚到操作前的数据状态。待回滚完成后,应用向事务协调器发送事务分支的回滚成功的消息,以通知事务协调器可以进行后续操作。

事务协调器接收到该消息后,可以将本地存储的本次全局事务的相关设置和信息清除,然后通知应用本次全局事务回滚成功,应用可以继续执行其他事务操作。

本发明实施例的事务消息的处理方法,以应用作为执行主体,在接收到事务协调发出的对消息分支进行回滚的指示后,向消息中间件回滚之前已发送的预备消息;根据事务协调器下发的事务分支的回滚指示,对本地的事务分支依次进行回滚。本方案实现了事务消息在分布式事务操作模式中的2pc阶段的二阶段(回滚)的处理流程。

实施例六

基于上述在一个分布式事务操作中处理事务消息的方案思想,如图10所示,其为本发明实施例示出的事务消息的处理方法流程图六,该方法的执行主为图3或图4中所示的事务协调器,其主要涉及了事务消息在分布式事务操作模式中的2pc阶段的二阶段的处理流程。如图10所示,该事务消息的处理方法包括如下步骤:

s101,向应用发送消息分支的回滚指示,回滚指示中包含待回滚的消息分支的消息发送结果;

其中,回滚指示为事务协调器在接收到消息分支所在的全局事务被请求回滚后发出的,或者由事务协调器判定全局事务超时后发出的;消息发送结果为应用向消息中间件发送本次全局事务涉及的预备消息后获得,并发送至事务协调器的。

其中,关于一个全局事务中消息分支的一阶段的执行过程可参见实施例一或实施例二所示内容。当事务协调器在一阶段接收到应用发送的回滚全局事务的请求后,会根据一阶段执行各事务分支和消息分支的先后顺序,倒序的对这些分支进行回滚,即依次向应用发送回滚这些分支的回滚指示。应用对全局事务中的消息分支进行回滚,在下发的回滚指示中包含待回滚的消息分支对应的消息发送结果。该消息发送结果是应用在一阶段执行过程中,向消息中间件发送本次全局事务涉及的预备消息后获得,并发送至事务协调器的。事务协调器将该消息发送结果与之前分配给全局事务的消息分支的分支id进行关联后存储在本地。

应用在接收到事务协调器发送的消息分支的回滚指示后,提取出该指示信息中包含的消息分支的消息发送结果,并根据结果在本地查找相应的预备消息的内容,如预备消息的消息id。然后利用消息id向消息中间件回滚该消息发送结果所对应的预备消息,例如,指示消息中间件清除该预备消息,以使得该预备消息永远不可消费。当消息回滚成功后,将回滚成功的消息反馈至事务协调器,事务协调器接到该通知后,继续向应用发送全局事务包含的其他事务分支或消息分支的回滚指示,以指示应用对本地的事务分支或消息分支进行回滚操作。

s102,向应用发送全局事务包含的事务分支的回滚指示;

例如,当事务协调器在一阶段接收到应用发送的回滚全局事务的请求后,会根据一阶段执行各事务分支和消息分支的先后顺序,倒序的对这些分支进行回滚,即依次向应用发送回滚这些分支的回滚指示。应用对全局事务中的事务分支进行回滚,向应用发送事务分支的回滚指示。

应用接收到事务协调器发出的事务分支的回滚指示后,将本地的事务分支依次回滚,即根据之前针对各事务操作所生成的操作镜像将本地的数据库操作设置为失效,使其回滚到操作前的数据状态。待回滚完成后,应用向事务协调器发送事务分支的回滚成功的消息,以通知事务协调器可以进行后续操作。

s103,响应于应用反馈的全局事务所包含的各消息分支和事务分支的回滚成功的消息,向应用发送针对本次全局事务回滚成功的消息;

事务协调器接收到全局事务所包含的所有消息分支和事务分支的回滚成功的消息后,可以将本地存储的本次全局事务的相关设置和信息清除,然后通知应用本次全局事务回滚成功,应用可以继续执行其他事务操作。

本发明实施例的事务消息的处理方法,以事务协调器作为执行主体,在一阶段接收到应用发送的全局事务的回滚请求后,根据一阶段中各事务分支和消息分支的执行顺次,倒序的对这些分支下发回滚指示,以使应用根据回滚指示,对相应的事务分支或消息分支进行回滚操作。本方案实现了事务消息在分布式事务操作模式中的2pc阶段的二阶段(回滚)的处理流程。

实施例七

如图11a所示,为本发明实施例的事务消息的处理装置结构图一,该事务消息的处理装置可用于执行如图5所示的方法步骤,其包括:

全局事务请求模块111,用于向事务协调器发送用于开启全局事务的请求,获取本次全局事务的事务id和所包含的消息分支的id;

消息分支预备模块112,用于向消息中间件发送本次全局事务涉及的预备消息,并将从消息中间件接收的消息发送结果上报至事务协调器,以指示将所述消息发送结果与所述消息分支的分支id关联;

事务分支执行模块113,用于执行全局事务包含的各事务分支;

全局事务上报模块114,用于向事务协调器发送提交或回滚全局事务的请求,以根据事务协调器返回的指示,对全局事务所包含的各事务分支和消息分支进行提交或回滚。

进一步地,如图11b所示,上述全局事务请求模块111可包括:

全局事务开启单元1111,用于向事务协调器发送用于开启本次全局事务的请求,并从事务协调器获取本次全局事务对应的事务id;

消息分支注册单元1112,用于根据本次全局事务对应的事务id,向事务协调器发送注册消息分支的请求,并从事务协调器获取本次全局事务所包含的消息分支的分支id。

进一步地,上述对全局事务所包含的消息分支进行提交或回滚包括:

向消息中间件提交或回滚预备消息。

进一步地,上述消息分支预备模块113将从消息中间件接收的消息发送结果上报至事务协调器可包括:

将从消息中间件接收的消息发送结果的信息转换为json字符串,并上报至事务协调器。

本发明实施例的事务消息的处理装置,将事务消息作为全局事务的一个消息分支,向事务协调器进行注册;并将消息分支与执行发送预备消息操作的消息发送结果进行关联,以真正将事务消息注册到事务协调器所维护管理的全局事务中;在执行完成全局事务所包含的各事务分支和消息分支后,根据执行的成功或失败的结果,向事务协调器发送全局事务的提交或回滚请求,以根据事务协调器返回的指示,对全局事务所包含的各事务分支和消息分支进行提交或回滚。本方案实现了事务消息在分布式事务操作模式中的2pc阶段的一阶段的处理流程。

实施例八

如图12a所示,为本发明实施例的事务消息的处理装置结构图二,该事务消息的处理装置可用于执行如图6所示的方法步骤,其包括:

全局事务受理模块121,用于根据应用所发送的用于开启本次全局事务的请求,向应用返回本次全局事务的事务id和所包含的消息分支的id;

消息分支关联模块122,用于响应于应用上报的消息发送结果、以及将消息发送结果与消息分支的分支id关联的指示,执行关联操作;消息发送结果为应用向消息中间件发送本次全局事务涉及的预备消息后获得;

全局事务汇总模块123,用于接收应用发送的提交或回滚全局事务的请求,以作为后续下发对全局事务所包含的各事务分支和消息分支进行相应的提交或回滚的指示的依据。

进一步地,如图12b所示,上述全局事务受理模块121可包括:

全局事务受理单元1211,用于根据应用所发送的用于开启本次全局事务的请求,向应用返回本次全局事务的事务id;

消息分支受理单元1212,用于响应于应用根据事务id发送的注册消息分支的请求,并向应用返回本次全局事务所包含的所述消息分支的分支id。

本发明实施例的事务消息的处理装置,将事务消息作为全局事务的一个消息分支,在本地进行注册;并将消息分支与执行发送预备消息操作的消息发送结果进行关联,以真正将事务消息注册到全局事务中;在应用执行完成全局事务所包含的各事务分支和消息分支后,接收应用根据执行的成功或失败的结果而发送的全局事务的提交或回滚请求,并以此作为对全局事务所包含的各事务分支和消息分支下发提交或回滚指示的依据。本方案实现了事务消息在分布式事务操作模式中的2pc阶段的一阶段的处理流程。

实施例九

如图13所示,为本发明实施例的事务消息的处理装置结构图三,该事务消息的处理装置可用于执行如图7所示的方法步骤,其包括:

消息提交接收模块131,用于接收事务协调器发送的消息分支的提交指示,提交指示中包含待提交的消息分支的消息发送结果;

消息提交处理模块132,用于根据待提交的消息分支的消息发送结果,向消息中间件提交该消息发送结果所对应的预备消息,并将提交成功的消息反馈至事务协调器;

事务提交接收模块133,用于接收事务协调器发送的事务分支的提交指示;

事务提交处理模块134,用于将全局事务中包含的各事务分支分别进行提交,并将提交成功的消息反馈至事务协调器。

进一步地,上述消息分支的提交指示为事务协调器在接收到消息分支所在的全局事务被请求提交后发出的;

事务分支的提交指示为事务协调器在接收到事务分支所在的全局事务被请求提交后发出的。

进一步地,上述消息发送结果为应用向消息中间件发送本次全局事务涉及的预备消息后获得,并发送至事务协调器的。

本发明实施例的事务消息的处理装置,在接收到事务协调发出的对消息分支进行提交的指示后,向消息中间件提交之前已发送的预备消息;然后,再根据事务协调器下发的事务分支的提交指示,对本地的事务分支依次进行提交。本方案实现了事务消息在分布式事务操作模式中的2pc阶段的二阶段(提交)的处理流程。

实施例十

如图14所示,为本发明实施例的事务消息的处理装置结构图四,该事务消息的处理装置可用于执行如图8所示的方法步骤,其包括:

消息提交指示模块141,用于向应用发送消息分支的提交指示,提交指示中包含待提交的消息分支的消息发送结果;

事务提交指示模块142,用于响应于应用反馈的针对消息分支的提交成功的消息,向应用发送全局事务包含的事务分支的提交指示;

提交成功处理模块143,用于响应于应用反馈的针对事务分支的提交成功的消息,向应用发送针对本次全局事务提交成功的消息。

进一步地,上述消息分支的提交指示为事务协调器在接收到消息分支所在的全局事务被请求提交后发出的。

进一步地,上述消息发送结果为应用向消息中间件发送本次全局事务涉及的预备消息后获得,并发送至事务协调器的。

本发明实施例的事务消息的处理装置,在一阶段接收到应用发送的全局事务的提交请求后,先向应用发出对消息分支进行提交的指示,待接收到应用反馈的成功提交的信息后,再向应用下发事务分支的提交指示从而保证事务消息和本地数据库操作的一致性。本方案实现了事务消息在分布式事务操作模式中的2pc阶段的二阶段(提交)的处理流程。

实施例十一

如图15所示,为本发明实施例的事务消息的处理装置结构图五,该事务消息的处理装置可用于执行如图9所示的方法步骤,其包括:

消息回滚接收模块151,用于接收事务协调器发送的消息分支的回滚指示,回滚指示中包含待回滚的消息分支的消息发送结果;

消息回滚处理模块152,用于根据待回滚的消息分支的消息发送结果,向消息中间件回滚该消息发送结果所对应的预备消息,并将回滚成功的消息反馈至事务协调器;

事务回滚接收模块153,用于接收事务协调器发送的事务分支的回滚指示;

事务回滚处理模块154,用于将全局事务中包含的各事务分支分别进行回滚,并将回滚成功的消息反馈至事务协调器。

进一步地,上述消息分支的回滚指示为事务协调器在接收到消息分支所在的全局事务被请求回滚后发出的,或者由事务协调器判定全局事务超时后发出的。

进一步地,上述消息发送结果为应用向消息中间件发送本次全局事务涉及的预备消息后获得,并发送至事务协调器的。

本发明实施例的事务消息的处理装置,在接收到事务协调发出的对消息分支进行回滚的指示后,向消息中间件回滚之前已发送的预备消息;根据事务协调器下发的事务分支的回滚指示,对本地的事务分支依次进行回滚。本方案实现了事务消息在分布式事务操作模式中的2pc阶段的二阶段(回滚)的处理流程。

实施例十二

如图16所示,为本发明实施例的事务消息的处理装置结构图六,该事务消息的处理装置可用于执行如图10所示的方法步骤,其包括:

消息回滚指示模块161,用于向应用发送消息分支的回滚指示,回滚指示中包含待回滚的消息分支的消息发送结果;

事务回滚指示模块162,用于向应用发送全局事务包含的事务分支的回滚指示;

回滚成功处理模块163,用于响应于应用反馈的全局事务所包含的各消息分支和事务分支的回滚成功的消息,向应用发送针对本次全局事务回滚成功的消息。

进一步地,上述消息分支的回滚指示为事务协调器在接收到消息分支所在的全局事务被请求回滚后发出的,或者由事务协调器判定全局事务超时后发出的。

进一步地,上述消息发送结果为应用向消息中间件发送本次全局事务涉及的预备消息后获得,并发送至事务协调器的。

本发明实施例的事务消息的处理装置,在一阶段接收到应用发送的全局事务的回滚请求后,根据一阶段中各事务分支和消息分支的执行顺次,倒序的对这些分支下发回滚指示,以使应用根据回滚指示,对相应的事务分支或消息分支进行回滚操作。本方案实现了事务消息在分布式事务操作模式中的2pc阶段的二阶段(回滚)的处理流程。

实施例十三

前面描述了事务消息的处理装置的整体架构,该装置的功能可借助一种电子设备实现完成,如图17所示,其为本发明实施例的电子设备的结构示意图,具体包括:存储器171和处理器172。

存储器171,用于存储程序。

除上述程序之外,存储器171还可被配置为存储其它各种数据以支持在电子设备上的操作。这些数据的示例包括用于在电子设备上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。

存储器171可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。

处理器172,耦合至存储器171,用于执行存储器171中的程序,以用于:

向事务协调器发送用于开启全局事务的请求,获取本次全局事务的事务id和所包含的消息分支的id;

向消息中间件发送本次全局事务涉及的预备消息,并将从消息中间件接收的消息发送结果上报至事务协调器,以指示将消息发送结果与消息分支的分支id关联;

执行全局事务包含的各事务分支;

向事务协调器发送提交或回滚全局事务的请求,以根据事务协调器返回的指示,对全局事务所包含的各事务分支和消息分支进行提交或回滚。

上述的具体处理操作已经在前面实施例中进行了详细说明,在此不再赘述。

进一步,如图17所示,电子设备还可以包括:通信组件173、电源组件174、音频组件175、显示器176等其它组件。图17中仅示意性给出部分组件,并不意味着电子设备只包括图17所示组件。

通信组件173被配置为便于电子设备和其他设备之间有线或无线方式的通信。电子设备可以接入基于通信标准的无线网络,如wifi,2g或3g,或它们的组合。在一个示例性实施例中,通信组件173经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,通信组件173还包括近场通信(nfc)模块,以促进短程通信。例如,在nfc模块可基于射频识别(rfid)技术,红外数据协会(irda)技术,超宽带(uwb)技术,蓝牙(bt)技术和其他技术来实现。

电源组件174,为电子设备的各种组件提供电力。电源组件174可以包括电源管理系统,一个或多个电源,及其他与为电子设备生成、管理和分配电力相关联的组件。

音频组件175被配置为输出和/或输入音频信号。例如,音频组件175包括一个麦克风(mic),当电子设备处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器171或经由通信组件173发送。在一些实施例中,音频组件175还包括一个扬声器,用于输出音频信号。

显示器176包括屏幕,其屏幕可以包括液晶显示器(lcd)和触摸面板(tp)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与触摸或滑动操作相关的持续时间和压力。

实施例十四

前面描述了事务消息的处理装置的整体架构,该装置的功能可借助一种电子设备实现完成,如图18所示,其为本发明实施例的电子设备的结构示意图,具体包括:存储器181和处理器182。

存储器181,用于存储程序。

除上述程序之外,存储器181还可被配置为存储其它各种数据以支持在电子设备上的操作。这些数据的示例包括用于在电子设备上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。

存储器181可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。

处理器182,耦合至存储器181,用于执行存储器181中的程序,以用于:

根据应用所发送的用于开启本次全局事务的请求,向应用返回本次全局事务的事务id和所包含的消息分支的id;

响应于应用上报的消息发送结果、以及将消息发送结果与消息分支的分支id关联的指示,执行关联操作;消息发送结果为应用向消息中间件发送本次全局事务涉及的预备消息后获得;

接收应用发送的提交或回滚全局事务的请求,以作为后续下发对全局事务所包含的各事务分支和消息分支进行相应的提交或回滚的指示的依据。

上述的具体处理操作已经在前面实施例中进行了详细说明,在此不再赘述。

进一步,如图18所示,电子设备还可以包括:通信组件183、电源组件184、音频组件185、显示器186等其它组件。图18中仅示意性给出部分组件,并不意味着电子设备只包括图18所示组件。

通信组件183被配置为便于电子设备和其他设备之间有线或无线方式的通信。电子设备可以接入基于通信标准的无线网络,如wifi,2g或3g,或它们的组合。在一个示例性实施例中,通信组件183经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,通信组件183还包括近场通信(nfc)模块,以促进短程通信。例如,在nfc模块可基于射频识别(rfid)技术,红外数据协会(irda)技术,超宽带(uwb)技术,蓝牙(bt)技术和其他技术来实现。

电源组件184,为电子设备的各种组件提供电力。电源组件184可以包括电源管理系统,一个或多个电源,及其他与为电子设备生成、管理和分配电力相关联的组件。

音频组件185被配置为输出和/或输入音频信号。例如,音频组件185包括一个麦克风(mic),当电子设备处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器181或经由通信组件183发送。在一些实施例中,音频组件185还包括一个扬声器,用于输出音频信号。

显示器186包括屏幕,其屏幕可以包括液晶显示器(lcd)和触摸面板(tp)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与触摸或滑动操作相关的持续时间和压力。

实施例十五

前面描述了事务消息的处理装置的整体架构,该装置的功能可借助一种电子设备实现完成,如图19所示,其为本发明实施例的电子设备的结构示意图,具体包括:存储器191和处理器192。

存储器191,用于存储程序。

除上述程序之外,存储器191还可被配置为存储其它各种数据以支持在电子设备上的操作。这些数据的示例包括用于在电子设备上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。

存储器191可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。

处理器192,耦合至存储器191,用于执行存储器191中的程序,以用于:

接收事务协调器发送的消息分支的提交指示,提交指示中包含待提交的消息分支的消息发送结果;

根据待提交的消息分支的消息发送结果,向消息中间件提交该消息发送结果所对应的预备消息,并将提交成功的消息反馈至事务协调器;

接收事务协调器发送的事务分支的提交指示;

将全局事务中包含的各事务分支分别进行提交,并将提交成功的消息反馈至事务协调器。

上述的具体处理操作已经在前面实施例中进行了详细说明,在此不再赘述。

进一步,如图19所示,电子设备还可以包括:通信组件193、电源组件194、音频组件195、显示器196等其它组件。图19中仅示意性给出部分组件,并不意味着电子设备只包括图19所示组件。

通信组件193被配置为便于电子设备和其他设备之间有线或无线方式的通信。电子设备可以接入基于通信标准的无线网络,如wifi,2g或3g,或它们的组合。在一个示例性实施例中,通信组件193经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,通信组件193还包括近场通信(nfc)模块,以促进短程通信。例如,在nfc模块可基于射频识别(rfid)技术,红外数据协会(irda)技术,超宽带(uwb)技术,蓝牙(bt)技术和其他技术来实现。

电源组件194,为电子设备的各种组件提供电力。电源组件194可以包括电源管理系统,一个或多个电源,及其他与为电子设备生成、管理和分配电力相关联的组件。

音频组件195被配置为输出和/或输入音频信号。例如,音频组件195包括一个麦克风(mic),当电子设备处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器191或经由通信组件193发送。在一些实施例中,音频组件195还包括一个扬声器,用于输出音频信号。

显示器196包括屏幕,其屏幕可以包括液晶显示器(lcd)和触摸面板(tp)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与触摸或滑动操作相关的持续时间和压力。

实施例十六

前面描述了事务消息的处理装置的整体架构,该装置的功能可借助一种电子设备实现完成,如图20所示,其为本发明实施例的电子设备的结构示意图,具体包括:存储器201和处理器202。

存储器201,用于存储程序。

除上述程序之外,存储器201还可被配置为存储其它各种数据以支持在电子设备上的操作。这些数据的示例包括用于在电子设备上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。

存储器201可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。

处理器202,耦合至存储器201,用于执行存储器201中的程序,以用于:

向应用发送消息分支的提交指示,提交指示中包含待提交的消息分支的消息发送结果;

响应于应用反馈的针对消息分支的提交成功的消息,向应用发送全局事务包含的事务分支的提交指示;

响应于应用反馈的针对事务分支的提交成功的消息,向应用发送针对本次全局事务提交成功的消息。

上述的具体处理操作已经在前面实施例中进行了详细说明,在此不再赘述。

进一步,如图20所示,电子设备还可以包括:通信组件203、电源组件204、音频组件205、显示器206等其它组件。图20中仅示意性给出部分组件,并不意味着电子设备只包括图20所示组件。

通信组件203被配置为便于电子设备和其他设备之间有线或无线方式的通信。电子设备可以接入基于通信标准的无线网络,如wifi,2g或3g,或它们的组合。在一个示例性实施例中,通信组件203经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,通信组件203还包括近场通信(nfc)模块,以促进短程通信。例如,在nfc模块可基于射频识别(rfid)技术,红外数据协会(irda)技术,超宽带(uwb)技术,蓝牙(bt)技术和其他技术来实现。

电源组件204,为电子设备的各种组件提供电力。电源组件204可以包括电源管理系统,一个或多个电源,及其他与为电子设备生成、管理和分配电力相关联的组件。

音频组件205被配置为输出和/或输入音频信号。例如,音频组件205包括一个麦克风(mic),当电子设备处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器201或经由通信组件203发送。在一些实施例中,音频组件205还包括一个扬声器,用于输出音频信号。

显示器206包括屏幕,其屏幕可以包括液晶显示器(lcd)和触摸面板(tp)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与触摸或滑动操作相关的持续时间和压力。

实施例十七

前面描述了事务消息的处理装置的整体架构,该装置的功能可借助一种电子设备实现完成,如图21所示,其为本发明实施例的电子设备的结构示意图,具体包括:存储器211和处理器212。

存储器211,用于存储程序。

除上述程序之外,存储器211还可被配置为存储其它各种数据以支持在电子设备上的操作。这些数据的示例包括用于在电子设备上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。

存储器211可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。

处理器212,耦合至存储器211,用于执行存储器211中的程序,以用于:

接收事务协调器发送的消息分支的回滚指示,回滚指示中包含待回滚的消息分支的消息发送结果;

根据待回滚的消息分支的消息发送结果,向消息中间件回滚该消息发送结果所对应的预备消息,并将回滚成功的消息反馈至事务协调器;

接收事务协调器发送的事务分支的回滚指示;

将全局事务中包含的各事务分支分别进行回滚,并将回滚成功的消息反馈至事务协调器。

上述的具体处理操作已经在前面实施例中进行了详细说明,在此不再赘述。

进一步,如图21所示,电子设备还可以包括:通信组件213、电源组件214、音频组件215、显示器216等其它组件。图21中仅示意性给出部分组件,并不意味着电子设备只包括图21所示组件。

通信组件213被配置为便于电子设备和其他设备之间有线或无线方式的通信。电子设备可以接入基于通信标准的无线网络,如wifi,2g或3g,或它们的组合。在一个示例性实施例中,通信组件213经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,通信组件213还包括近场通信(nfc)模块,以促进短程通信。例如,在nfc模块可基于射频识别(rfid)技术,红外数据协会(irda)技术,超宽带(uwb)技术,蓝牙(bt)技术和其他技术来实现。

电源组件214,为电子设备的各种组件提供电力。电源组件214可以包括电源管理系统,一个或多个电源,及其他与为电子设备生成、管理和分配电力相关联的组件。

音频组件215被配置为输出和/或输入音频信号。例如,音频组件215包括一个麦克风(mic),当电子设备处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器211或经由通信组件213发送。在一些实施例中,音频组件215还包括一个扬声器,用于输出音频信号。

显示器216包括屏幕,其屏幕可以包括液晶显示器(lcd)和触摸面板(tp)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与触摸或滑动操作相关的持续时间和压力。

实施例十八

前面描述了事务消息的处理装置的整体架构,该装置的功能可借助一种电子设备实现完成,如图22所示,其为本发明实施例的电子设备的结构示意图,具体包括:存储器221和处理器222。

存储器221,用于存储程序。

除上述程序之外,存储器221还可被配置为存储其它各种数据以支持在电子设备上的操作。这些数据的示例包括用于在电子设备上操作的任何应用程序或方法的指令,联系人数据,电话簿数据,消息,图片,视频等。

存储器221可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(sram),电可擦除可编程只读存储器(eeprom),可擦除可编程只读存储器(eprom),可编程只读存储器(prom),只读存储器(rom),磁存储器,快闪存储器,磁盘或光盘。

处理器222,耦合至存储器221,用于执行存储器221中的程序,以用于:

向应用发送消息分支的回滚指示,回滚指示为事务协调器在接收到消息分支所在的全局事务被请求回滚后发出的,或者由事务协调器判定全局事务超时后发出的;回滚指示中包含待回滚的消息分支的消息发送结果;消息发送结果为应用向消息中间件发送本次全局事务涉及的预备消息后获得,并发送至事务协调器的;

向应用发送全局事务包含的事务分支的回滚指示;

在接收到应用反馈的全局事务所包含的各消息分支和事务分支的回滚成功的消息后,向应用发送针对本次全局事务回滚成功的消息。

上述的具体处理操作已经在前面实施例中进行了详细说明,在此不再赘述。

进一步,如图22所示,电子设备还可以包括:通信组件223、电源组件224、音频组件225、显示器226等其它组件。图22中仅示意性给出部分组件,并不意味着电子设备只包括图22所示组件。

通信组件223被配置为便于电子设备和其他设备之间有线或无线方式的通信。电子设备可以接入基于通信标准的无线网络,如wifi,2g或3g,或它们的组合。在一个示例性实施例中,通信组件223经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,通信组件223还包括近场通信(nfc)模块,以促进短程通信。例如,在nfc模块可基于射频识别(rfid)技术,红外数据协会(irda)技术,超宽带(uwb)技术,蓝牙(bt)技术和其他技术来实现。

电源组件224,为电子设备的各种组件提供电力。电源组件224可以包括电源管理系统,一个或多个电源,及其他与为电子设备生成、管理和分配电力相关联的组件。

音频组件225被配置为输出和/或输入音频信号。例如,音频组件225包括一个麦克风(mic),当电子设备处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器221或经由通信组件223发送。在一些实施例中,音频组件225还包括一个扬声器,用于输出音频信号。

显示器226包括屏幕,其屏幕可以包括液晶显示器(lcd)和触摸面板(tp)。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与触摸或滑动操作相关的持续时间和压力。

本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。

最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。

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