一种基于Rabbitmq实现分布式事务的方法技术

技术编号:31712988 阅读:17 留言:0更新日期:2022-01-01 11:17
本发明专利技术提供了一种基于Rabbitmq实现分布式事务的方法,包括以下步骤:S1、用户启动Rabbitmq集群,并将需要使用分布式业务的A业务服务器、B业务服务器建立与Rabbitmq的连接;S2、A业务服务器开启发布确认检测,用于确定Rabbitmq受理消息成功,同时冗余本地消息表,定时检查消息表,如超时未发送成功则再次重发;S3、Rabbitmq集群接收消息,并将消息进行持久化存储;S4、B业务服务器接收消息,开启手动Ack,提供幂等性接口防止重复消息数据的处理。本发明专利技术有益效果:本发明专利技术所述的一种基于Rabbitmq实现分布式事务的方法可以有效利用Rabbitmq集群的稳定,在确保Rabbitmq这个独立的系统自身稳定外,保障了应用系统在使用分布式事务时的高性能。式事务时的高性能。式事务时的高性能。

【技术实现步骤摘要】
一种基于Rabbitmq实现分布式事务的方法


[0001]本专利技术属于APP后端
,尤其是涉及一种基于Rabbitmq实现分布式事务的方法。

技术介绍

[0002]在分布式应用系统中,随着用户增多以及功能模块化,那么两个服务需要跨网络远程调用,两个服务持有了不同的数据库连接进行数据库操作,此时就会产生分布式事务,现有技术存在以下问题:基于数据库XA/JTA协议的方式:需要数据库厂商支持,且高并发下性能较低;TCC编程式解决方案,对服务的侵入性强,服务的每个事务都必须实现try,confirm,cancel等3个方法,开发成本高,今后维护改造的成本也高。因此亟需一种基于Rabbitmq实现分布式事务的方法。

技术实现思路

[0003]有鉴于此,本专利技术旨在提出一种基于Rabbitmq实现分布式事务的方法,为了解决分布式系统例如订单、运单等跨服务需要使用分布式事务的场景,且尽可能保证应用系统的高性能。
[0004]为达到上述目的,本专利技术的技术方案是这样实现的:
[0005]第一方面本方案公开了一种基于Rabbitmq实现分布式事务的方法,包括以下步骤:
[0006]S1、用户启动Rabbitmq集群,并将需要使用分布式业务的A业务服务器、B业务服务器建立与Rabbitmq的连接;
[0007]S2、A业务服务器开启发布确认检测,用于确定Rabbitmq受理消息成功,同时冗余本地消息表,定时检查消息表,如超时未发送成功则再次重发;
[0008]S3、Rabbitmq集群接收消息,并将消息进行持久化存储;
[0009]S4、B业务服务器接收消息,开启手动Ack,提供幂等性接口防止重复消息数据的处理。
[0010]进一步的,在步骤S2中,超过设定时间未发送成功则再次重发。
[0011]进一步的,在步骤S2中,A业务服务器开启发布确认检测需要建立与Rabbitmq的连接进行确认操作,Rabbitmq将以与发布时相同的顺序向发布者确认消息。
[0012]进一步的,在步骤S3中,Rabbitmq把业务A发送过来的消息进行持久化存储,Rabbitmq集群则是搭建一种可靠的多节点的环境来保障Rabbitmq的高可用性。
[0013]进一步的,在步骤S4中,在开启手动Ack时,一次用户操作只对应一次数据处理,支持失败重试,并记录失败次数,失败次数达到阈值则过多时通知运维人员处理,必要时进行消息丢弃处理。
[0014]进一步的,在步骤S4中,B业务服务器根据消息标识记录是否已处理,避免相同消息重复处理。
[0015]进一步的,设定时间为10s。
[0016]进一步的,失败次数根据业务方设置,如失败三次调起短信或邮件发送通知运维人员进行人工处理。
[0017]第二方面本方案公开了一种服务器,包括至少一个处理器,以及与所述处理器通信连接的存储器,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述处理器执行,以使所述至少一个处理器执行一种基于Rabbitmq实现分布式事务的方法。
[0018]第三方面本方案公开了一种计算机可读取存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现一种基于Rabbitmq实现分布式事务的方法。
[0019]相对于现有技术,本专利技术所述的一种基于Rabbitmq实现分布式事务的方法具有以下有益效果:
[0020]本专利技术所述的一种基于Rabbitmq实现分布式事务的方法可以有效利用Rabbitmq集群的稳定,在确保Rabbitmq这个独立的系统自身稳定外,保障了应用系统在使用分布式事务时的高性能。
附图说明
[0021]构成本专利技术的一部分的附图用来提供对本专利技术的进一步理解,本专利技术的示意性实施例及其说明用于解释本专利技术,并不构成对本专利技术的不当限定。在附图中:
[0022]图1为本专利技术实施例所述的一种基于Rabbitmq实现分布式事务的方法示意图。
具体实施方式
[0023]需要说明的是,在不冲突的情况下,本专利技术中的实施例及实施例中的特征可以相互组合。
[0024]下面将参考附图并结合实施例来详细说明本专利技术。
[0025]一种基于Rabbitmq实现分布式事务的方法,包括以下步骤:
[0026]S1、用户启动Rabbitmq集群,并将需要使用分布式业务的A业务服务器、B业务服务器建立与Rabbitmq的连接;
[0027]S2、A业务服务器开启发布确认检测,用于确定Rabbitmq受理消息成功,同时冗余本地消息表,定时检查消息表,如超时未发送成功则再次重发;
[0028]S3、Rabbitmq集群接收消息,并将消息进行持久化存储;
[0029]S4、B业务服务器接收消息,开启手动Ack,提供幂等性接口防止重复消息数据的处理。
[0030]在步骤S2中,超过设定时间未发送成功则再次重发。
[0031]在步骤S2中,A业务服务器开启发布确认检测需要建立与Rabbitmq的连接进行确认操作,Rabbitmq将以与发布时相同的顺序向发布者确认消息。
[0032]在步骤S3中,Rabbitmq把业务A发送过来的消息进行持久化存储,Rabbitmq集群则是搭建一种可靠的多节点的环境来保障Rabbitmq的高可用性。
[0033]在步骤S4中,在开启手动Ack时,一次用户操作只对应一次数据处理,支持失败重试,并记录失败次数,失败次数达到阈值则过多时通知运维人员处理,必要时进行消息丢弃处理。
[0034]在步骤S4中,B业务服务器根据消息标识记录是否已处理,避免相同消息重复处理。
[0035]设定时间为10s。
[0036]失败次数根据业务方设置,如失败三次调起短信或邮件发送通知运维人员进行人工处理。
[0037]一种服务器,包括至少一个处理器,以及与所述处理器通信连接的存储器,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述处理器执行,以使所述至少一个处理器执行一种基于Rabbitmq实现分布式事务的方法。
[0038]一种计算机可读取存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现一种基于Rabbitmq实现分布式事务的方法。
[0039]本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及方法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本专利技术的范围。
[0040]在本申请所提供的几个实施例中,应该理解到,所揭露的方法和系统,可以通过其它的方式实现。例如,以上所述单元的划分,仅仅为一种逻辑功能划分,实际实现时本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于Rabbitmq实现分布式事务的方法,其特征在于,包括以下步骤:S1、用户启动Rabbitmq集群,并将需要使用分布式业务的A业务服务器、B业务服务器建立与Rabbitmq的连接;S2、A业务服务器开启发布确认检测,用于确定Rabbitmq受理消息成功,同时冗余本地消息表,定时检查消息表,如超时未发送成功则再次重发;S3、Rabbitmq集群接收消息,并将消息进行持久化存储;S4、B业务服务器接收消息,开启手动Ack,提供幂等性接口防止重复消息数据的处理。2.根据权利要求1所述的一种基于Rabbitmq实现分布式事务的方法,其特征在于:在步骤S2中,超过设定时间未发送成功则再次重发。3.根据权利要求1所述的一种基于Rabbitmq实现分布式事务的方法,其特征在于:在步骤S2中,A业务服务器开启发布确认检测需要建立与Rabbitmq的连接进行确认操作,Rabbitmq将以与发布时相同的顺序向发布者确认消息。4.根据权利要求1所述的一种基于Rabbitmq实现分布式事务的方法,其特征在于:在步骤S3中,Rabbitmq把业务A发送过来的消息进行持久化存储,Rabbitmq集群则是搭建一种可靠的多节点的环境来保障Rabbitmq的高可用性。5.根据权利要求1所述的一种基于Rabbitm...

【专利技术属性】
技术研发人员:王鹏凯
申请(专利权)人:紫光云技术有限公司
类型:发明
国别省市:

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

1