当前位置: 首页 > article >正文

seata基本使用

使用seata之前需要先了解一下seata的一些名词和关系:

TC:事务协调者 用于开启一个全局和分支事务

TM:事务管理者 定义事务的范围,在事务开始的时候向TC请求开启一个全局事务

RM:资源管理器 管理事务的状态,与TC做交流,通知TC是提交事务还是回滚事务


业务开始的时候:

TC作为一个独立的服务,管理着全局和分支事务,TM定义事务范围并向TC请求开启一个全局的事务,RM监控所有的分支事务,当所有的分支事务成功,则通知TC进行提交事务,如果有一个事务失败,那么TC会执行逆向sql用于回滚事务

使用之前需要先导入仪依赖

 <!--seata 分布式事务-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-seata</artifactId>
        </dependency>

然后在配置文件中配置

seata:
  tx-service-group: train_group # 事务服务组名称
  service:
    vgroup-mapping:   # 事务分组与服务组的映射关系
      train_group: default   # 将 train_group 映射到 default 服务组
    grouplist: # 服务组的地址列表
      default: localhost:8091 # default 服务组的地址

在相关联的数据库添加一下逆向表用于存放seata的逆向sql用于回滚


CREATE TABLE `undo_log` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `branch_id` bigint(20) NOT NULL,
  `xid` varchar(100) NOT NULL,
  `context` varchar(128) NOT NULL,
  `rollback_info` longblob NOT NULL,
  `log_status` int(11) NOT NULL,
  `log_created` datetime NOT NULL,
  `log_modified` datetime NOT NULL,
  `ext` varchar(100) DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `ux_undo_log` (`xid`,`branch_id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

在事务的初始链,事务刚开始的地方添加注解

    @GlobalTransactional


http://www.kler.cn/a/550588.html

相关文章:

  • Android车载应用开发常用adb命令
  • 【含文档+源码】基于Web的在线课堂测试课程考评系统的开发与实现
  • Mac zsh使用相关问题之一
  • 深入了解 AppScan 工具的使用:筑牢 Web 应用安全防线
  • 【SpringBoot苍穹外卖】debugDay0 打开前端页面
  • Doris 查询优化秘籍(上篇):关键优化策略剖析
  • Python 面试题
  • 解锁豆瓣高清海报(三)从深度爬虫到URL构造,实现极速下载
  • 轮播图html
  • KVM设置端口转发
  • windows 设置poppler
  • 机器学习基本篇
  • DeepSeek教unity------State Machine
  • 解锁大数据治理:开启数据驱动的新时代
  • Go 语言里中的堆与栈
  • VScode运行后出现黑窗口
  • UE5 Niagara 粒子远处闪烁解决
  • FPGA实现SDI视频解码转GTY光口传输,基于GS2971+Aurora 8b/10b编解码架构,提供工程源码和技术支持
  • kubernetes源码分析 kubelet
  • java速通笔记