一种基于MQPaaS的事务消息处理方法及装置制造方法及图纸

技术编号:33406821 阅读:19 留言:0更新日期:2022-05-11 23:31
本发明专利技术提供一种基于MQ PaaS的事务消息处理方法及装置,其中的事务消息处理方法包括:获取目标事务消息,目标事务消息包括消息生产者的分组信息;根据目标事务消息的本地事务执行结果,对目标事务消息进行处理;其中,若本地事务执行结果为不知情,则根据消息生产者的分组信息,回查本地事务执行结果,该方法解决了现有技术中无法在MQ PaaS平台架构下实现事务消息的缺陷,使MQ PaaS平台架构下实现事务消息成为可能。息成为可能。息成为可能。

【技术实现步骤摘要】
一种基于MQ PaaS的事务消息处理方法及装置


[0001]本专利技术涉及消息处理
,尤其涉及一种基于MQ PaaS的事务消息处理方法及装置。

技术介绍

[0002]目前通用的分布式事务实现方式包括两阶段提交(2 Phase Commit,简称2PC)、三阶段提交(3 Phase Commit,简称3PC)、两阶段补型事务(Try

Confirm

Concel,简称TCC)、事务消息和消息表,但对于MQ(Message Queue,简称消息队列)PaaS(Platform as a Service,简称平台即服务)分布式消息平台而言,2PC、3PC和 TCC这些事务实现方式都过于复杂,不太适用,可行的是基于消息表和RocketMQ原生的事务实现方式。
[0003]对于基于消息表的事务实现方式,由于消息表基于关系型数据库,要求使用业务系统的数据库,还要求消息表与业务系统处在同一个事务中,所以,SDK(Software Development Kit,简称软件开发工具包)需要预先或者按照需求在业务数据库中创建消息表,而在业务数据库中创建消息表的操作对业务都有一定的侵入性,因此,对于分布式事务消息的实现而言,使用消息表的方式并不是首选,对于RocketMQ原生的事务实现方式,事务实现的流程为:1)事务发起方首先发送准备消息到MQ;2)事务发起方在发送准备消息成功后执行本地事务;3) 根据本地事务执行结果返回commit(提交)或者是rollback(回滚);4) 如果返回rollback,MQ将删除该准备消息不进行发送;如果返回commit,MQ将会把这个消息发送给Consumer端;5)如果执行本地事务过程中,执行端挂掉,或者超时,MQ将会不停地询问同组的其他producer来获取状态;6)Consumer端的消费成功机制由MQ保证。但该事务实现方式在MQ PaaS平台架构下,由于SDK并不与Broker(缓存代理)直连,无法回查本地事务状态,不能完整地实现事务消息。
[0004]因此,如何解决现有技术中无法在MQ PaaS平台架构下实现事务消息的问题,是消息处理
亟待解决的重要课题。

技术实现思路

[0005]本专利技术提供一种基于MQ PaaS的事务消息处理方法及装置,用以解决现有技术中无法在MQ PaaS平台架构下实现事务消息的缺陷,以实现MQ PaaS平台架构下的事务消息。
[0006]一方面,本专利技术提供一种基于MQ PaaS的事务消息处理方法,包括:获取目标事务消息,所述目标事务消息包括消息生产者的分组信息;根据所述目标事务消息的本地事务执行结果,对所述目标事务消息进行处理;其中,若所述本地事务执行结果为不知情,则根据所述消息生产者的分组信息,回查所述本地事务执行结果。
[0007]进一步地,所述若所述本地事务执行结果为不知情,则根据所述消息生产者的分组信息,回查所述本地事务执行结果,包括:根据所述消息生产者的分组信息,依次查询生产者代理;基于所述生产者代理的查询反馈信息,回查所述本地事务执行结果。
[0008]进一步地,所述基于所述生产者代理的查询反馈信息,回查所述本地事务执行结
果,包括:若查询的生产者代理为目标生产者代理,则响应所述目标生产者的查询确认信息,回查所述本地事务执行结果;若查询的生产者代理为非目标生产者代理,则响应所述非目标生产者代理的查询否定信息,继续查询其他尚未被查询的生产者代理。
[0009]进一步地,所述基于MQ PaaS的事务消息处理方法还包括:若回查得到的所述本地事务执行结果为不知情,则重复回查操作;若回查次数达到预设回查次数时,所述本地事务执行结果仍为不知情,则结束所述回查操作,并删除所述目标事务消息。
[0010]进一步地,所述基于MQ PaaS的事务消息处理方法还包括:若查询到所述目标生产者代理,则记录并保存所述消息生产者和该目标生产者代理之间的消息发送链路信息,以供再次回查时直接调用。
[0011]进一步地,所述根据所述目标事务消息的本地事务执行结果,对所述目标事务消息进行处理,包括:若所述本地事务执行结果为事务消息提交,则转发所述目标事务消息。
[0012]进一步地,所述根据所述目标事务消息的本地事务执行结果,对所述目标事务消息进行处理,还包括:若所述本地事务执行结果为事务消息回滚,则删除所述目标事务消息。
[0013]第二方面,本专利技术还提供一种基于MQ PaaS的事务消息处理装置,包括:事务消息获取模块,用于获取目标事务消息,所述目标事务消息包括消息生产者的分组信息;事务消息处理模块,用于根据所述目标事务消息的本地事务执行结果,对所述目标事务消息进行处理;其中,事务消息回查模块,用于若所述本地事务执行结果为不知情,则根据所述消息生产者的分组信息,回查所述本地事务执行结果。
[0014]第三方面,本专利技术还提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如上述任一种所述基于MQ PaaS的事务消息处理方法的步骤。
[0015]第四方面,本专利技术还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上述任一种所述基于MQ PaaS的事务消息处理方法的步骤。
[0016]第五方面,本专利技术还提供一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如上述任一种所述基于MQ PaaS的事务消息处理方法的步骤。
[0017]本专利技术提供的基于MQ PaaS的事务消息处理方法,通过获取带有消息生产者分组信息的目标事务消息,并根据该目标事务消息的本地事务执行结果,对目标事务消息进行处理,当本地事务执行结果为不知情时,则根据消息生产者的分组信息,回查本地事务执行结果,以进一步对目标事务消息进行处理,该方法弥补了现有技术中传统无法在MQ PaaS平台架构下实现事务消息的缺陷,使MQ PaaS平台架构下实现事务消息成为可能,并且,这种事务消息实现方式不依赖关系型数据库,所有操作均是在内存中进行,不会入侵业务,也不会影响中间件效率。
附图说明
[0018]为了更清楚地说明本专利技术或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附
图获得其他的附图。
[0019]图1为现有技术提供的传统Rocket MQ原生的事务实现方式的流程示意图;图2为现有技术提供的传统Rocket MQ原生的事务实现方式的回查示意图;图3为本专利技术提供的MQ PaaS平台架构下回查失败的逻辑示意图;图4为本专利技术提供的基于MQ PaaS的事务消息处理方法的流程示意图;图5为本专利技术提供的基于MQ PaaS的事务消息处理的主体交互图;图6为本专利技术提供的基于MQ PaaS的事务消息处理装置的结构示本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于MQ PaaS的事务消息处理方法,其特征在于,包括:获取目标事务消息,所述目标事务消息包括消息生产者的分组信息;根据所述目标事务消息的本地事务执行结果,对所述目标事务消息进行处理;其中,若所述本地事务执行结果为不知情,则根据所述消息生产者的分组信息,回查所述本地事务执行结果。2.根据权利要求1所述的基于MQ PaaS的事务消息处理方法,其特征在于,所述若所述本地事务执行结果为不知情,则根据所述消息生产者的分组信息,回查所述本地事务执行结果,包括:根据所述消息生产者的分组信息,依次查询生产者代理;基于所述生产者代理的查询反馈信息,回查所述本地事务执行结果。3.根据权利要求2所述的基于MQ PaaS的事务消息处理方法,其特征在于,所述基于所述生产者代理的查询反馈信息,回查所述本地事务执行结果,包括:若查询的生产者代理为目标生产者代理,则响应所述目标生产者的查询确认信息,回查所述本地事务执行结果;若查询的生产者代理为非目标生产者代理,则响应所述非目标生产者代理的查询否定信息,继续查询其他尚未被查询的生产者代理。4.根据权利要求3所述的基于MQ PaaS的事务消息处理方法,其特征在于,还包括:若回查得到的所述本地事务执行结果为不知情,则重复回查操作;若回查次数达到预设回查次数时,所述本地事务执行结果仍为不知情,则结束所述回查操作,并删除所述目标事务消息。5.根据权利要求3所述的基于MQ PaaS的事务消息处理方法,其特征在于,还包括:若查询到所述目标生产者代...

【专利技术属性】
技术研发人员:易存道
申请(专利权)人:北京宝兰德软件股份有限公司
类型:发明
国别省市:

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

1