tcc-transaction 源码分析

文章介绍了TCC(Try-Confirm-Cancel)事务处理机制的核心流程,包括CompensableTransactionAspect和ResourceCoordinatorAspect两个关键拦截器的作用,以及如何通过FeignInterceptor和Dubbo的过滤器与拦截器实现跨应用的事务支持。同时,文章提到了事务恢复机制,由QuartzRecoveryTask进行恢复任务。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

tcc介绍

tcc介绍查看我之前的文章: https://caicongyang.blog.csdn.net/article/details/119721282?spm=1001.2014.3001.5502

tcc-transaction 介绍: http://mengyun.org/zh-cn/index.html

本文基于2.x 最新版本:https://github.com/changmingxie/tcc-transaction

核心流程

核心类: org.mengyun.tcctransaction.interceptor.CompensableTransactionAspect 可补偿的事物拦截器

核心类:org.mengyun.tcctransaction.interceptor.ResourceCoordinatorAspect 资源协调拦截器

两个类通过子类继承 Ordered 接口来实现CompensableTransactionAspect 先调用,后调用ResourceCoordinatorAspect接口;

核心流程:

@startuml
Compensable -> CompensableTransactionAspect
CompensableTransactionAspect -> compensableTransactionInterceptor :  interceptCompensableMethod
CompensableTransactionInterceptor ->CompensableTransactionInterceptor : rootMethodProceed开启事务
Compensable -> ResourceCoordinatorAspect
ResourceCoordinatorAspect -> ResourceCoordinatorInterceptor:interceptTransactionContextMethod,事物参与者加入,并执行真正执行TRYING阶段的方法
CompensableTransactionInterceptor -> CompensableTransactionInterceptor:  typing方式执行成功执行transactionManager.commit 否则执行rollback方法
CompensableTransactionInterceptor -> Transaction:  commit()所有食物参与都执行confirm 方法
CompensableTransactionInterceptor -> Transaction:rollback() 所有事物参与都执行CANCEL方法
@enduml

在这里插入图片描述

http 支持

FeignInterceptor继承feign拦截器RequestInterceptor把TransactionContext 传递到下一个应用

下一个应用通过 RequesterInterceptor 将TransactionContext 获取重新放到 TransactionContextHolder 中

dubbo 支持

生产者:org.mengyun.tcctransaction.dubbo.filter.TransactionContextDecodeFilter 传递transaction上下文

消费者:org.mengyun.tcctransaction.dubbo.interceptor.TransactionContextEncodeInterceptor 获取上下文

通过该类org.mengyun.tcctransaction.dubbo.interceptor.CompensableTransactionInterceptor 将消费者加入事务传播链中

恢复

入口类 org.mengyun.tcctransaction.recovery.QuartzRecoveryTask

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值