概述
多数据源单服务写入, 分布式事务实现
使用随机数控制产生异常
**注: 网上很多都是只有多数据源配置,实际不能控制事务统一回滚,
单服务场景下如果多个数据源只有一个写,剩下都是读, 则不需要分布式事务**
为减少篇幅,详细代码在代码仓库,可自行参考
版本
springboot 2.1.7.RELEASE
配置引入
org.springframework.boot
spring-boot-starter-data-jpa
mysql
mysql-connector-java
org.springframework.boot
spring-boot-starter-jta-atomikos
增加配置类 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地址
【atomikos实现分布式事务】gitee地址
推荐阅读
- 小米和智汀的智能家居设备是通过什么方式进行无线配网的
- 人称智能小Homekit的智汀到底有什么魔力()
- 万物互联时代,小米、苹果、华为等智能家居生态该如何挑选()
- 想要加盟智能家居,你需要了解些什么()
- 其他/Other|Java神话仍在延续,脚本语言唯Java马首是瞻
- 为App签名的其他方法
- 其他|这款国产神器,我爱了
- 联动是智能家居未来重要的拐点(智汀家庭云带你体验跨品牌联动)
- 其他|用pywinhook或pyhook监听鼠标事件