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

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

相关文章:

  • 【Java】Mongodb
  • UI自动化教程 —— 元素定位技巧:精确找到你需要的页面元素
  • Kafka偏移量管理全攻略:从基础概念到高级操作实战
  • 如何在yolov8系列运行自己的数据集
  • NAT(网络地址转换)技术详解:网络安全渗透测试中的关键应用与防御策略
  • 嵌入式人工智能应用-第四章 决策树 6
  • PostgreSQL 创建数据库
  • 一个基于Spring Boot和Vue.js的web商城系统-邻家小铺
  • SyntaxError: invalid syntax
  • MYSQL中的性能调优方法
  • Mac 安装Ollama和llama3,本地部署LobeChat和刘皇叔聊三国
  • Rust编程语言入门教程(四)猜数游戏:一次猜测
  • HarmonyOS4-工具安装
  • 【JavaScript】《JavaScript高级程序设计 (第4版) 》笔记-Chapter15-DOM 扩展
  • STM32 CubeMx配置串口收发使用DMA并调用Idle模式(一)
  • 嵌入式编程——数据结构与linux编程
  • 测试常见问题汇总-检查表(持续完善)
  • 【C++游戏开发-五子棋】
  • 【SQL】SQL约束
  • 大模型开发框架对比:LangChain、LlamaIndex 及其他
  • 河间做网站的公司/关键词难易度分析
  • 本地网站搭建流程/整站优化seo公司哪家好
  • 站长seo计费系统/怎么制作网页推广
  • 网站域名证书/长春关键词优化平台
  • 生产企业展厅设计/seo公司排名教程
  • 网页设计怎么创建站点/百度应用商店app下载安装