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简单使用相关推荐

  1. 阿里巴巴开源分布式框架Seata TCC模式深入分析

    2019 年 3 月,蚂蚁金服加入分布式事务 Seata 的社区共建中,并贡献其 TCC 模式.本期是 SOFAChannel 第四期,主题:分布式事务 Seata TCC 模式深度解析,本文根据觉生 ...

  2. Seata TCC模式实战

    前言 最近状态有点不好,所以创作动力不足,发觉日常生活一定要做减法,对少量的事保持持续专注的投入,养成良好的习惯. 今天补充下,Seata TCC模式实战. 一.TCC设计原则 从 TCC 模型的框架 ...

  3. 分布式事务 - Seata - TCC模式

    目录 一.什么是TCC 二.AT & TCC区别 及 适用场景 三.代码集成示例 3.1 升级Seata 1.5.2 3.2 示例场景说明 3.3 TCC核心接口定义 3.4 TCC相关阶段规 ...

  4. 分布式事务之Seata TCC

    文章目录 TCC 对比 注意的问题 实现细节 Seata TCC实战 A银行代码 B银行代码 聚合服务代码 TCC TCC是一种资源,实现了Try.Confirm.Cancel三个操作接口.与2PC不 ...

  5. Seata TCC模式-TCC模式

    项目源码: https://gitee.com/benwang6/seata-samples 一.TCC 基本原理 TCC 与 Seata AT 事务一样都是两阶段事务,它与 AT 事务的主要区别为: ...

  6. Springboot+nacos+seata实现简单分布式事务经验分享:二

    Springboot+nacos+seata实现简单的分布式事务 上一篇文章把三个服务都注册进nacos中了,这次就开始写业务代码 首先先创建三个数据库,每个数据库都需要有一张记录表,一张回滚表 or ...

  7. java分布式事务——seata,tcc解决方案总结!

    目录 1.分布式事务基础理论 1.1.CAP理论 1.2.BASE理论 2.分布式事务解决方案之2PC(两阶段提交) 2.2.1 XA方案 2.2.2 Seata方案 2.2.3分布式事务解决方案之T ...

  8. seata TCC模式

    .Seata 产品模块 .Seata 中有三⼤模块,分别是 TM.RM 和 TC.其中 TM 和 RM 是作为 Seata 的客户端与业务系统集 成在⼀起,TC 作为 Seata 的服务端独⽴部署. ...

  9. Seata TCC、Saga、XA模式初识

    TCC模式 TCC(Try Confirm Cancel)同样也是两阶段提交: 一阶段prepare行为 两阶段commit或rollback行为 和AT模式不同之处在于解决了AT基于支持本地ACID ...

  10. seata 如何开启tcc事物_微服务分布式事务4种解决方案实战

    分布式事务 分布式事务是指事务的参与者,支持事务的服务器,资源服务器分别位于分布式系统的不同节点之上,通常一个分布式 事物中会涉及到对多个数据源或业务系统的操作. 典型的分布式事务场景:跨银行转操作就 ...

最新文章

  1. Android面试题目整理与讲解
  2. 每天看一片代码系列(二):WebSocket-Node
  3. asterisk channel driver dev ref
  4. 华南理工大学广州学院计算机二级,华南理工大学广州学院学子在第三届“泰迪杯”数据分析职业技能大赛中荣获佳绩...
  5. 第三章 第一部分 不定积分例题
  6. php静态登录界面代码,JSP_JSP登录验证功能的实现,静态的登录界面的设计login.htm - phpStudy...
  7. mysql的存储引擎_Mysql数据库3种存储引擎有什么区别?
  8. RHEL 7.5 部署 OpenStack Queens 踩坑记
  9. sql2008 表名为全数字时查询报错
  10. overcommit_memory 内核参数
  11. 阿里云OSS图床搭建教程
  12. 【西语】【6】el amor es 什么是爱
  13. 条码生成器如何导入CSV文件批量生成条形码
  14. CIFAR10图像分类ResNet模型实战(pytorch)
  15. matlab画椭圆 长轴 短轴,跟踪目标的快速椭圆拟合方法
  16. 1D mesauring
  17. 五柳先生传(陶渊明)
  18. paddle 40 支持任意维度数据的梯度平衡机制GHM Loss的实现(支持ignore_index、class_weight,支持反向传播训练,支持多分类)
  19. Picgo的gitee图床简略设置及gitee图片仓库无法使用解决方案
  20. 使用循环语句打印菱形梅花阵

热门文章

  1. B数和B+树、红黑树数据结构的特点
  2. C语言中,%m.ns 的含义
  3. debounce 防抖函数
  4. 名企笔试:网易游戏2017招聘笔试题(赶去公司)
  5. 二叉树的创建——递归与非递归
  6. 一分钟搞懂精度,错误率、查准率、查全率
  7. vue通过URL传递参数
  8. 学生免费申请JetBrains许可证
  9. 【转载】儒林外史人物——周进(二)
  10. linux--多目录下的MakeFile文件(嵌套Makefile)编写