tcc-transaction 源码分析

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

猜你喜欢

转载自blog.csdn.net/caicongyang/article/details/130514992