Windows下部署Seata1.5.2可参照博文:Windows下部署Seata1.5.2,解决Seata无法启动问题-CSDN博客
1. 引入依赖
<!-- 分布式事务 -->
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-seata</artifactId>
</dependency>
2. 客户端application.yml配置
使用分布式事务的客户端添加以下配置。
seata:
tx-service-group: default_tx_group # 事务分组,必须和服务器配置一样
service:
# can not get cluster name in registry config 'service.vgroupMapping.default_tx_group', please make sure registry config correct
vgroup-mapping:
default_tx_group: default
grouplist:
default: localhost:8091
配置说明:
(1)客户端的事务分组要与Seata服务端一致
(2)必须配置分组映射service.vgroupMapping.default_tx_group,否则会报以下错误:
can not get cluster name in registry config 'service.vgroupMapping.default_tx_group', please make sure registry config correct
(3)必须配置分组列表service.grouplist.default=localhost:8091,否者项目启动时会报以下错误:
注意:服务分组列表的端口,可以在Seata服务端的seata/conf/application.yml中配置,未配置,默认是8091,如下:
3. 使用seata的DataSourceProxy代理自己的数据源
注意:所有想要用到分布式事务的微服务使用seata DataSourceProxy代理自己的数据源。
@Configuration
public class MySeataConfig {
@Bean
public DataSource dataSource(DataSourceProperties dataSourceProperties){
HikariDataSource dataSource = dataSourceProperties.initializeDataSourceBuilder().type(HikariDataSource.class).build();
if (StringUtils.hasText(dataSourceProperties.getName())) {
dataSource.setPoolName(dataSourceProperties.getName());
}
return new DataSourceProxy(dataSource);
}
}
提示:dataSource的获取查考源码DataSourceConfiguration类,如下:
4. 启用分布式事务
分布式事务入口使用注解@GlobalTransactional。
每个远程的小事务用@Transactional