seata+eureka+mybatis-plus+dynamic-datasource+oracle分布式事務方案實現(xiàn)踩坑


1、查詢資料中的一個大坑

http://m.itdecent.cn/p/45940a29de7a?utm_campaign=hugo(網(wǎng)友教程)

https://github.com/seata/seata-samples/tree/master/springcloud-eureka-feign-mybatis-seata(官方教程)

不知道因為版本的原因還是seata對駝峰和橫線轉(zhuǎn)換的問題,file.conf文件中的db-type和driver-class-name這類橫線連接符的字段并不能被seata識別,最終換成了駝峰命令法才正常啟動了。

2、dynamic-datasource是一個數(shù)據(jù)源代理,需要實現(xiàn)seata代理dynamic-datasource,dynamic-datasource代理druid三級代理。配置方式參考dynamic-datasource官網(wǎng)最新關(guān)于seata的案例

3、seata在每個分庫中需要undo_log表,在官方的示例代碼中用的是MySQL數(shù)據(jù)庫,適配Oracle數(shù)據(jù)庫需要為將undo_log表的表名和字段名都改為大寫(報錯找不到表),需要為UNDO_LOG表加名稱為UNDO_LOG_SEQ的序列(報錯找不到序列

參考資料:https://github.com/seata/seata/issues/1639

4、seata框架在file.conf中默認的序列化方式是jackson,oracle的timestamp字段不支持jackson序列化方式,要么加手動序列化的代碼,要么在file.conf中將序列化方式更換為kryo

在工程中引入kryo依賴:

<dependency>

? ? <groupId>de.javakaffee</groupId>

? ? <artifactId>kryo-serializers</artifactId>

? ? <version>0.45</version>

</dependency>

<dependency>

? ? <groupId>com.esotericsoftware</groupId>

? ? <artifactId>kryo</artifactId>

? ? <version>4.0.2</version>

</dependency>

5、用docker-compose實現(xiàn)的一個seata-server:

鏈接:https://pan.baidu.com/s/1vrYhUdl4PXzq-CYt25iDPg

提取碼:lhov

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容