概述
参考资料:
实现
被调用方
使用 seata 的 TCC 模式全局事务,需要被调用方使用接口,并配合对应的注解来实现,接口需要定义 TCC 各个阶段需要调用的方法。
接口需要实现的三个方法:
用于业务预处理的方法,即 Try 阶段、的方法,比如冻结用户的部分余额等等;
用于提交业务的方法,即 Commit 方法,比如扣除用户之前冻结的部分余额;
用于回滚业务的方法,即 Rollback 方法,比如返还之前冻结的用户余额;
被调用方需要用到的几个注解:
@LocalTCC (必要)
该注解需要添加到上面描述的接口上,表示实现该接口的类被 seata 来管理,seata 根据事务的状态,自动调用我们定义的方法,如果没问题则调用 Commit 方法,否则调用 Rollback 方法。
@TwoPhaseBusinessAction (必要)
该注解用在接口的 Try 方法上,该注解的用法如下:
@TwoPhaseBusinessAction(name = "tryTcc", commitMethod = "commitTcc", rollbackMethod = "cancelTcc")
该注解包含这几个属性:
* name 为 tcc 方法的 bean 名称,需要全局唯一,一般写方法名即可;
* commitMethod 自然地写 Commit 方法的方法名;
* rollback