CN113867897A - 一种基于Rabbitmq实现分布式事务的方法 - Google Patents
一种基于Rabbitmq实现分布式事务的方法 Download PDFInfo
- Publication number
- CN113867897A CN113867897A CN202111168095.4A CN202111168095A CN113867897A CN 113867897 A CN113867897 A CN 113867897A CN 202111168095 A CN202111168095 A CN 202111168095A CN 113867897 A CN113867897 A CN 113867897A
- Authority
- CN
- China
- Prior art keywords
- rabbitmq
- message
- distributed transaction
- transaction based
- service server
- 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
- 238000000034 method Methods 0.000 title claims abstract description 31
- 238000012545 processing Methods 0.000 claims abstract description 15
- 238000012790 confirmation Methods 0.000 claims abstract description 10
- 238000001514 detection method Methods 0.000 claims abstract description 7
- 230000002085 persistent effect Effects 0.000 claims abstract description 4
- 238000012423 maintenance Methods 0.000 claims description 8
- 238000004590 computer program Methods 0.000 claims description 5
- 230000005540 biological transmission Effects 0.000 claims description 3
- 230000009286 beneficial effect Effects 0.000 abstract description 2
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Images
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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
- G06F9/45558—Hypervisor-specific management and integration aspects
- G06F2009/4557—Distribution of virtual machine instances; Migration and load balancing
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
本发明提供了一种基于Rabbitmq实现分布式事务的方法,包括以下步骤:S1、用户启动Rabbitmq集群,并将需要使用分布式业务的A业务服务器、B业务服务器建立与Rabbitmq的连接;S2、A业务服务器开启发布确认检测,用于确定Rabbitmq受理消息成功,同时冗余本地消息表,定时检查消息表,如超时未发送成功则再次重发;S3、Rabbitmq集群接收消息,并将消息进行持久化存储;S4、B业务服务器接收消息,开启手动Ack,提供幂等性接口防止重复消息数据的处理。本发明有益效果:本发明所述的一种基于Rabbitmq实现分布式事务的方法可以有效利用Rabbitmq集群的稳定,在确保Rabbitmq这个独立的系统自身稳定外,保障了应用系统在使用分布式事务时的高性能。
Description
技术领域
本发明属于APP后端技术领域,尤其是涉及一种基于Rabbitmq实现分布式事务的方法。
背景技术
在分布式应用系统中,随着用户增多以及功能模块化,那么两个服务需要跨网络远程调用,两个服务持有了不同的数据库连接进行数据库操作,此时就会产生分布式事务,现有技术存在以下问题:基于数据库XA/JTA协议的方式:需要数据库厂商支持,且高并发下性能较低;TCC编程式解决方案,对服务的侵入性强,服务的每个事务都必须实现try,confirm,cancel等3个方法,开发成本高,今后维护改造的成本也高。因此亟需一种基于Rabbitmq实现分布式事务的方法。
发明内容
有鉴于此,本发明旨在提出一种基于Rabbitmq实现分布式事务的方法,为了解决分布式系统例如订单、运单等跨服务需要使用分布式事务的场景,且尽可能保证应用系统的高性能。
为达到上述目的,本发明的技术方案是这样实现的:
第一方面本方案公开了一种基于Rabbitmq实现分布式事务的方法,包括以下步骤:
S1、用户启动Rabbitmq集群,并将需要使用分布式业务的A业务服务器、B业务服务器建立与Rabbitmq的连接;
S2、A业务服务器开启发布确认检测,用于确定Rabbitmq受理消息成功,同时冗余本地消息表,定时检查消息表,如超时未发送成功则再次重发;
S3、Rabbitmq集群接收消息,并将消息进行持久化存储;
S4、B业务服务器接收消息,开启手动Ack,提供幂等性接口防止重复消息数据的处理。
进一步的,在步骤S2中,超过设定时间未发送成功则再次重发。
进一步的,在步骤S2中,A业务服务器开启发布确认检测需要建立与Rabbitmq的连接进行确认操作,Rabbitmq将以与发布时相同的顺序向发布者确认消息。
进一步的,在步骤S3中,Rabbitmq把业务A发送过来的消息进行持久化存储,Rabbitmq集群则是搭建一种可靠的多节点的环境来保障Rabbitmq的高可用性。
进一步的,在步骤S4中,在开启手动Ack时,一次用户操作只对应一次数据处理,支持失败重试,并记录失败次数,失败次数达到阈值则过多时通知运维人员处理,必要时进行消息丢弃处理。
进一步的,在步骤S4中,B业务服务器根据消息标识记录是否已处理,避免相同消息重复处理。
进一步的,设定时间为10s。
进一步的,失败次数根据业务方设置,如失败三次调起短信或邮件发送通知运维人员进行人工处理。
第二方面本方案公开了一种服务器,包括至少一个处理器,以及与所述处理器通信连接的存储器,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述处理器执行,以使所述至少一个处理器执行一种基于Rabbitmq实现分布式事务的方法。
第三方面本方案公开了一种计算机可读取存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现一种基于Rabbitmq实现分布式事务的方法。
相对于现有技术,本发明所述的一种基于Rabbitmq实现分布式事务的方法具有以下有益效果:
本发明所述的一种基于Rabbitmq实现分布式事务的方法可以有效利用Rabbitmq集群的稳定,在确保Rabbitmq这个独立的系统自身稳定外,保障了应用系统在使用分布式事务时的高性能。
附图说明
构成本发明的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1为本发明实施例所述的一种基于Rabbitmq实现分布式事务的方法示意图。
具体实施方式
需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
下面将参考附图并结合实施例来详细说明本发明。
一种基于Rabbitmq实现分布式事务的方法,包括以下步骤:
S1、用户启动Rabbitmq集群,并将需要使用分布式业务的A业务服务器、B业务服务器建立与Rabbitmq的连接;
S2、A业务服务器开启发布确认检测,用于确定Rabbitmq受理消息成功,同时冗余本地消息表,定时检查消息表,如超时未发送成功则再次重发;
S3、Rabbitmq集群接收消息,并将消息进行持久化存储;
S4、B业务服务器接收消息,开启手动Ack,提供幂等性接口防止重复消息数据的处理。
在步骤S2中,超过设定时间未发送成功则再次重发。
在步骤S2中,A业务服务器开启发布确认检测需要建立与Rabbitmq的连接进行确认操作,Rabbitmq将以与发布时相同的顺序向发布者确认消息。
在步骤S3中,Rabbitmq把业务A发送过来的消息进行持久化存储,Rabbitmq集群则是搭建一种可靠的多节点的环境来保障Rabbitmq的高可用性。
在步骤S4中,在开启手动Ack时,一次用户操作只对应一次数据处理,支持失败重试,并记录失败次数,失败次数达到阈值则过多时通知运维人员处理,必要时进行消息丢弃处理。
在步骤S4中,B业务服务器根据消息标识记录是否已处理,避免相同消息重复处理。
设定时间为10s。
失败次数根据业务方设置,如失败三次调起短信或邮件发送通知运维人员进行人工处理。
一种服务器,包括至少一个处理器,以及与所述处理器通信连接的存储器,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述处理器执行,以使所述至少一个处理器执行一种基于Rabbitmq实现分布式事务的方法。
一种计算机可读取存储介质,存储有计算机程序,所述计算机程序被处理器执行时实现一种基于Rabbitmq实现分布式事务的方法。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及方法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本申请所提供的几个实施例中,应该理解到,所揭露的方法和系统,可以通过其它的方式实现。例如,以上所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。上述单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围,其均应涵盖在本发明的权利要求和说明书的范围当中。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
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所述的一种基于Rabbitmq实现分布式事务的方法,其特征在于:在步骤S4中,在开启手动Ack时,一次用户操作只对应一次数据处理,支持失败重试,并记录失败次数,失败次数达到阈值则过多时通知运维人员处理,必要时进行消息丢弃处理。
6.根据权利要求1所述的一种基于Rabbitmq实现分布式事务的方法,其特征在于:在步骤S4中,B业务服务器根据消息标识记录是否已处理,避免相同消息重复处理。
7.根据权利要求2所述的一种基于Rabbitmq实现分布式事务的方法,其特征在于:设定时间为10s。
8.根据权利要求5所述的一种基于Rabbitmq实现分布式事务的方法,其特征在于:失败次数根据业务方设置,如失败三次调起短信或邮件发送通知运维人员进行人工处理。
9.一种服务器,其特征在于:包括至少一个处理器,以及与所述处理器通信连接的存储器,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述处理器执行,以使所述至少一个处理器执行如权利要求1-8任一所述的一种基于Rabbitmq实现分布式事务的方法。
10.一种计算机可读取存储介质,存储有计算机程序,其特征在于:所述计算机程序被处理器执行时实现权利要求1-8任一项所述的一种基于Rabbitmq实现分布式事务的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111168095.4A CN113867897A (zh) | 2021-09-30 | 2021-09-30 | 一种基于Rabbitmq实现分布式事务的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111168095.4A CN113867897A (zh) | 2021-09-30 | 2021-09-30 | 一种基于Rabbitmq实现分布式事务的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113867897A true CN113867897A (zh) | 2021-12-31 |
Family
ID=79001834
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111168095.4A Pending CN113867897A (zh) | 2021-09-30 | 2021-09-30 | 一种基于Rabbitmq实现分布式事务的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113867897A (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110173495A1 (en) * | 2006-03-27 | 2011-07-14 | Alibaba Group Holding Limited | Method and System for Reliable Intersystem Message Notification |
CN109241186A (zh) * | 2018-08-29 | 2019-01-18 | 深圳市小牛在线互联网信息咨询有限公司 | 分布式事务的管理方法、系统、计算机设备及存储介质 |
CN112527472A (zh) * | 2020-11-18 | 2021-03-19 | 北京邮电大学 | 基于微服务的分布式事务处理系统和方法 |
CN112671827A (zh) * | 2020-11-25 | 2021-04-16 | 紫光云技术有限公司 | 一种分布式事务最终一致性方法 |
-
2021
- 2021-09-30 CN CN202111168095.4A patent/CN113867897A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20110173495A1 (en) * | 2006-03-27 | 2011-07-14 | Alibaba Group Holding Limited | Method and System for Reliable Intersystem Message Notification |
CN109241186A (zh) * | 2018-08-29 | 2019-01-18 | 深圳市小牛在线互联网信息咨询有限公司 | 分布式事务的管理方法、系统、计算机设备及存储介质 |
CN112527472A (zh) * | 2020-11-18 | 2021-03-19 | 北京邮电大学 | 基于微服务的分布式事务处理系统和方法 |
CN112671827A (zh) * | 2020-11-25 | 2021-04-16 | 紫光云技术有限公司 | 一种分布式事务最终一致性方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111367628B (zh) | 分布式事务的处理方法、装置及消息生产方、消费方系统 | |
CN109542639B (zh) | 一种保障微服务调用数据一致性的处理方法、处理装置 | |
CN106502769B (zh) | 分布式事务处理方法、装置及系统 | |
US8055735B2 (en) | Method and system for forming a cluster of networked nodes | |
CN100591031C (zh) | 实现高可用性光纤信道交换机的方法和装置 | |
CN104092718A (zh) | 分布式系统及分布式系统中配置信息的更新方法 | |
US20060190948A1 (en) | Connection manager, method, system and program product for centrally managing computer applications | |
US20110173495A1 (en) | Method and System for Reliable Intersystem Message Notification | |
JP2009531879A (ja) | メッセージ再伝送のための方法およびシステム並びにシステム間メッセージ配信のための方法およびシステム | |
US20120011100A1 (en) | Snapshot acquisition processing technique | |
CN105893395B (zh) | 分布式事务的消息回查方法及其系统 | |
CN111274052A (zh) | 数据分发方法、服务器及计算机可读存储介质 | |
CN101090308A (zh) | 一种心跳通信方法与系统 | |
CN109241186A (zh) | 分布式事务的管理方法、系统、计算机设备及存储介质 | |
US8006248B2 (en) | Method, apparatus and computer program for facilitating communication between a client application and a server application | |
CN109582335A (zh) | 一种无中断存储集群节点在线升级方法、装置及设备 | |
CN112527472A (zh) | 基于微服务的分布式事务处理系统和方法 | |
CN109885382A (zh) | 跨系统分布式事务处理方法和分布式事务处理的系统 | |
CN111611094A (zh) | 对异常mq信息的监控及管理方法 | |
CN110275892A (zh) | 面向区块链的数据管理方法、装置、设备及存储介质 | |
CN110941622A (zh) | 一种数据处理方法及装置 | |
CN112632093A (zh) | 工单处理方法、设备、系统、存储介质及程序产品 | |
CN113867897A (zh) | 一种基于Rabbitmq实现分布式事务的方法 | |
CN112995262B (zh) | 分布式事务提交方法、系统及计算设备 | |
JP2005502957A (ja) | 厳密に一回のキャッシュフレームワーク |
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 |