最近一个微服务项目中有用到Seata,联调的时候发现了一些数据不回滚的问题,特此记录一下:
1.Seata介绍:
Seata 是一个开源的分布式事务解决方案,致力于在微服务架构下提供高性能和易用的分布式事务服务。它由阿里巴巴集团发起并贡献给社区,旨在解决分布式系统中的一致性问题。
2.引入Seata 依赖
<!-- Alibaba Seata 配置 -->
<dependency><groupId>io.seata</groupId><artifactId>seata-spring-boot-starter</artifactId><version>${alibaba.seata.version}</version>
</dependency>
3.应用场景
需要通过注解来实现,本次因为跨服务了,所以主要使用的是全局事务。在对应的Service实现方法上添加注解 @Transactional@GlobalTransactional(rollbackFor = Exception.class)这两个即可,在对应的Fegin接口的实现方法中也添加@Transactional(propagation = Propagation.REQUIRES_NEW)这个即可,这样调用方的实现方法中出现任何异常,都会全局回滚。