Spring Boot2.0之多數(shù)據(jù)源分布式事務(wù)問題
發(fā)布時間 2019-12-30
一、多數(shù)據(jù)源事務(wù)問題:
如上圖,此時連接兩個數(shù)據(jù)源,進(jìn)行插入操作。出現(xiàn)異常時,此時事務(wù)管理器只管理了test02的這端業(yè)務(wù)代碼。所以test02的這個會回滾!但是test01會入庫。
二、解決方案: 使用springboot+jta+atomikos 分布式事物管理(不適合微服務(wù),需要拿到數(shù)據(jù)源然后注冊到同一個全局事務(wù)里面去)
1、引入jar
2、配置文件也要修改:
application.yml
3、新建CoreDBConfig和LogDBConfig讀取數(shù)據(jù)原配置
CoreDBConfig.java
LogDBConfig.java
4、為保證多數(shù)據(jù)源切換正常,需創(chuàng)建CustomSqlSessionTemplate類,繼承SqlSessionTemplate,覆寫getSqlSessionFactory()方法
CustomSqlSessionTemplate.java
5、數(shù)據(jù)源配置類
DruidConfig.java
三、原理圖