seata分布式事务

该博客介绍了如何利用Seata进行分布式事务管理。首先,创建事务服务模块heima-leadnews-seata,并在三个服务中引入依赖。接着,配置Seata并创建SeataConfig类。然后,配置file.conf和registry.conf文件,并在数据库中创建undo_log表以支持事务回滚。最后,通过@GlobalTransactional注解标记需要事务的方法,实现分布式事务。
摘要由CSDN通过智能技术生成

比如:一个方法影响三个服务三个数据库

实现分布式事务

创建事务服务模块

heima-leadnews-seata

分别向三个服务引入pom依赖

<dependency>
    <groupId>com.heima</groupId>
    <artifactId>heima-leadnews-seata</artifactId>
    <version>1.0-SNAPSHOT</version>
</dependency>

分别向三个服务添加seata配置

spring:
  application:
    name: leadnews-wemedia
  cloud:
    alibaba:
      seata:
        tx-service-group: ${spring.application.name}_tx_group

分别向需要事务的三个服务 config文件下创建SeataConfig类

@Configuration
@ComponentScan("com.heima.seata.config") //扫描事务服务模块config文件下配置
public class SeataConfig {
}

分别向三个服务resources文件下添加file.conf和registry.conf

这两个文件在seata安装包中

并修改配置信息file.conf文件第26行 最好设置为服务名leadnews-user_tx_group

在需要事务的方法上添加注解

@GlobalTransactional

在每个涉及到事务的数据库中添加表

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;



       你认为快乐的,就去寻找;你认为值得的,就去守候;你认为幸福的,就去珍惜。没有不被评说的事,没有不被猜测的的人。做最真实最漂亮的自己,依心而行,无憾今生。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值