seata-tcc简单使用
seata配置教程
被调用方
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 方法的方法名;
* rollbackMethod 写 Rollback 方法的方法名;
@BusinessActionContextParameter
该注解用来修饰 Try 方法的入参,被修饰的入参可以在 Commit 方法和 Rollback 方法中通过 BusinessActionContext 获取。
该注解的用法如下:@TwoPhaseBusinessAction(name = "tryBusiness", commitMethod = "commitTcc", rollbackMethod = "cancelTcc") String tryBusiness (@BusinessActionContextParameter(paramName = "orderId") String id)
可以使用 Map 传多个参数:
@TwoPhaseBusinessAction(name = "tryBusiness", commitMethod = "commitTcc", rollbackMethod = "cancelTcc") String tryBusiness (@BusinessActionContextParameter(paramName = "params") Map<String, String> params)
在接口方法的实现代码中,可以通过 BusinessActionContext 来获取参数, BusinessActionContext 就是 seata tcc 的事务上下文,用于存放 tcc 事务的一些关键数据。BusinessActionContext 对象可以直接作为 commit 方法和 rollbakc 方法的参数,Seata 会自动注入参数:
@Override public boolean commitTcc(BusinessActionContext context) {String orderId = context.getActionContext("oderId");return true; }
注意参数名要和 Try 方法里的定义保持一致。
seata-tcc简单使用相关推荐
- 阿里巴巴开源分布式框架Seata TCC模式深入分析
2019 年 3 月,蚂蚁金服加入分布式事务 Seata 的社区共建中,并贡献其 TCC 模式.本期是 SOFAChannel 第四期,主题:分布式事务 Seata TCC 模式深度解析,本文根据觉生 ...
- Seata TCC模式实战
前言 最近状态有点不好,所以创作动力不足,发觉日常生活一定要做减法,对少量的事保持持续专注的投入,养成良好的习惯. 今天补充下,Seata TCC模式实战. 一.TCC设计原则 从 TCC 模型的框架 ...
- 分布式事务 - Seata - TCC模式
目录 一.什么是TCC 二.AT & TCC区别 及 适用场景 三.代码集成示例 3.1 升级Seata 1.5.2 3.2 示例场景说明 3.3 TCC核心接口定义 3.4 TCC相关阶段规 ...
- 分布式事务之Seata TCC
文章目录 TCC 对比 注意的问题 实现细节 Seata TCC实战 A银行代码 B银行代码 聚合服务代码 TCC TCC是一种资源,实现了Try.Confirm.Cancel三个操作接口.与2PC不 ...
- Seata TCC模式-TCC模式
项目源码: https://gitee.com/benwang6/seata-samples 一.TCC 基本原理 TCC 与 Seata AT 事务一样都是两阶段事务,它与 AT 事务的主要区别为: ...
- Springboot+nacos+seata实现简单分布式事务经验分享:二
Springboot+nacos+seata实现简单的分布式事务 上一篇文章把三个服务都注册进nacos中了,这次就开始写业务代码 首先先创建三个数据库,每个数据库都需要有一张记录表,一张回滚表 or ...
- java分布式事务——seata,tcc解决方案总结!
目录 1.分布式事务基础理论 1.1.CAP理论 1.2.BASE理论 2.分布式事务解决方案之2PC(两阶段提交) 2.2.1 XA方案 2.2.2 Seata方案 2.2.3分布式事务解决方案之T ...
- seata TCC模式
.Seata 产品模块 .Seata 中有三⼤模块,分别是 TM.RM 和 TC.其中 TM 和 RM 是作为 Seata 的客户端与业务系统集 成在⼀起,TC 作为 Seata 的服务端独⽴部署. ...
- Seata TCC、Saga、XA模式初识
TCC模式 TCC(Try Confirm Cancel)同样也是两阶段提交: 一阶段prepare行为 两阶段commit或rollback行为 和AT模式不同之处在于解决了AT基于支持本地ACID ...
- seata 如何开启tcc事物_微服务分布式事务4种解决方案实战
分布式事务 分布式事务是指事务的参与者,支持事务的服务器,资源服务器分别位于分布式系统的不同节点之上,通常一个分布式 事物中会涉及到对多个数据源或业务系统的操作. 典型的分布式事务场景:跨银行转操作就 ...
最新文章
- Android面试题目整理与讲解
- 每天看一片代码系列(二):WebSocket-Node
- asterisk channel driver dev ref
- 华南理工大学广州学院计算机二级,华南理工大学广州学院学子在第三届“泰迪杯”数据分析职业技能大赛中荣获佳绩...
- 第三章 第一部分 不定积分例题
- php静态登录界面代码,JSP_JSP登录验证功能的实现,静态的登录界面的设计login.htm - phpStudy...
- mysql的存储引擎_Mysql数据库3种存储引擎有什么区别?
- RHEL 7.5 部署 OpenStack Queens 踩坑记
- sql2008 表名为全数字时查询报错
- overcommit_memory 内核参数
- 阿里云OSS图床搭建教程
- 【西语】【6】el amor es 什么是爱
- 条码生成器如何导入CSV文件批量生成条形码
- CIFAR10图像分类ResNet模型实战(pytorch)
- matlab画椭圆 长轴 短轴,跟踪目标的快速椭圆拟合方法
- 1D mesauring
- 五柳先生传(陶渊明)
- paddle 40 支持任意维度数据的梯度平衡机制GHM Loss的实现(支持ignore_index、class_weight,支持反向传播训练,支持多分类)
- Picgo的gitee图床简略设置及gitee图片仓库无法使用解决方案
- 使用循环语句打印菱形梅花阵