关于其他:atomikos实现分布式事务

5次阅读

共计 973 个字符,预计需要花费 3 分钟才能阅读完成。

概述

多数据源单服务写入, 分布式事务实现

应用随机数管制产生异样

** 注: 网上很多都是只有多数据源配置,理论不能管制事务对立回滚,
单服务场景下如果多个数据源只有一个写,剩下都是读, 则不须要分布式事务 **

为缩小篇幅,具体代码在代码仓库,可自行参考

版本

springboot 2.1.7.RELEASE

配置引入

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

<dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
</dependency>

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-jta-atomikos</artifactId>
</dependency>

减少配置类

AtomikosJtaPlatform

JPAAtomikosTransactionConfig Atomikos 事务配置类

PrimaryConfig 主数据源配置

SecondaryConfig 其它数据源配置

数据对象实现

User

减少仓储实现

须要别离实现 primary 和 secondary, 从而反对多个数据源拜访

PrimaryUserRepository

SecondaryUserRepository

实现服务类

PrimaryUserService

SecondaryUserService

ExampleService

负责对立调用 PrimaryUserService 和 SecondaryUserService,
模仿一个服务同时拜访多个服务类 ( 每个服务类援用了不同数据源)

如果其中某个服务抛出异样,则整个事务回滚, \@Transactional(rollbackOn =
Exception.class) 是必须的

测试

com.example.springbootatomikos.services.UserServiceTest#testSave

代码

github 地址

gitee 地址

正文完
 0