1、环境配置
下载:https://github.com/seata/seata
2、配置:配置的是 conf下的file.conf与registry.conf
file.conf
由文件的形式改为数据库的形式工作,所以下面配置的是数据库信息与最上面的组信息,需要记住这个组名(可自起 *_tx_group)
registry.conf
配置了注册中心,3333是nacos的一个节点
配置数据库
"seata" 数据库
,sql来源:conf > db.store.sql 、版本源码查看(这里是v1.00) +业务数据库
3、启动Seata ,直接文件启动 root@innor:/usr/local/seata/seata-1.0.0/bin# ./seata-server.sh
4、在项目中配置
依赖:
<!--seata--> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-seata</artifactId> <!-- 因为兼容版本问题,所以需要剔除它自带的seata的包 --> <exclusions> <exclusion> <artifactId>seata-all</artifactId> <groupId>io.seata</groupId> </exclusion> </exclusions> </dependency> <dependency> <groupId>io.seata</groupId> <artifactId>seata-all</artifactId> <version>1.0.0</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> </dependency> <!--mybatis-plus--> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency> <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</artifactId> </dependency>
yml
组名与bruid数据源的配置
主启动类:
@SpringBootApplication(exclude = DataSourceAutoConfiguration.class)//取消数据源的自带创建
...
配置:
//用于Seata的数据源配置 @Configuration public class DataSourceConfig { /** * 从配置文件获取属性构造datasource,注意前缀,这里用的是druid,根据自己情况配置, * 原生datasource前缀取"spring.datasource" * * @return */ @ConfigurationProperties(prefix = "spring.datasource") @Bean public DruidDataSource druidDataSource(){ return new DruidDataSource(); } /** * 构造datasource代理对象,替换原来的datasource * * @param druidDataSource * @return */ @Primary @Bean("dataSource") public DataSourceProxy dataSourceProxy(DataSource druidDataSource) { return new DataSourceProxy(druidDataSource); }
}
将file.conf与registry.conf复制到项目的resource下
业务:
在事务操作的服务加上注解,注意OpenFeign不要写实现方法,因为调用出问题,且没有后备方法就会报错,报错就会使数据回滚。
@GlobalTransactional(name = "fsp-test" , rollbackFor = Exception.class)