Spring Boot2.0之多数据源分布式事务问题
发布时间 2019-12-30
一、多数据源事务问题:
如上图,此时连接两个数据源,进行插入操作。出现异常时,此时事务管理器只管理了test02的这端业务代码。所以test02的这个会回滚!但是test01会入库。
二、解决方案: 使用springboot+jta+atomikos 分布式事物管理(不适合微服务,需要拿到数据源然后注册到同一个全局事务里面去)
1、引入jar
2、配置文件也要修改:
application.yml
3、新建CoreDBConfig和LogDBConfig读取数据原配置
CoreDBConfig.java
LogDBConfig.java
4、为保证多数据源切换正常,需创建CustomSqlSessionTemplate类,继承SqlSessionTemplate,覆写getSqlSessionFactory()方法
CustomSqlSessionTemplate.java
三、原理图