最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Seata集成Mybatis-Plus解決多數(shù)據(jù)源事務(wù)問題

 更新時間:2023年11月01日 14:39:41   作者:吳名氏.  
當(dāng)進(jìn)行業(yè)務(wù)操作時,訂單發(fā)生異常 ,進(jìn)行了回滾操作,因為在不同的數(shù)據(jù)庫實例中,余額卻扣除成功,此時發(fā)現(xiàn)數(shù)據(jù)不一致問題,本文給大家介紹Seata集成Mybatis-Plus解決多數(shù)據(jù)源事務(wù)問題,感興趣的朋友一起看看吧

1 前言

在使用單個服務(wù),多數(shù)據(jù)源時,也存在分布式事務(wù)問題。

當(dāng)單體系統(tǒng)需要訪問多個數(shù)據(jù)庫(實例)時就會產(chǎn)生分布式事務(wù)。 比如:用戶信 息和訂單信息分別在兩個MySQL實例存儲,用戶管理系統(tǒng)刪除用戶信息,需要分別刪除用戶信息及用戶的訂單信 息,由于數(shù)據(jù)分布在不同的數(shù)據(jù)實例,需要通過不同的數(shù)據(jù)庫鏈接去操作數(shù)據(jù),此時產(chǎn)生分布式事務(wù)。 簡言之:跨數(shù)據(jù)庫實例產(chǎn)生分布式事務(wù)。

在這里插入圖片描述

2 問題場景

參考此文檔搭建一個多數(shù)據(jù)源項目Mybatis-Plus入門系列(19) -多數(shù)據(jù)源使用詳解。

在插入訂單數(shù)據(jù)時,模擬一個異常:

    @Override
    @DS("db_order")
    @Transactional
    public void insertOrder() {
        // 插入訂單
        OrderTbl orderTbl = new OrderTbl();
        orderTbl.setUserId("12");
        orderTbl.setCommodityCode("IPHONE 13");
        orderTbl.setCount(1);
        orderTblMapper.insert(orderTbl);
        int i = 5 / 0;
    }

當(dāng)進(jìn)行業(yè)務(wù)操作時,訂單發(fā)生異常 ,進(jìn)行了回滾操作,因為在不同的數(shù)據(jù)庫實例中,余額卻扣除成功,此時發(fā)現(xiàn)數(shù)據(jù)不一致問題。

3 使用Seata 解決多數(shù)據(jù)源事務(wù)問題

3.1 集成Nacos Seata

參考該系列,給當(dāng)前服務(wù)添加Nacos Seata 相關(guān)依賴,并啟動Nacos Seata 。

3.2 多數(shù)據(jù)源集成Seata

多數(shù)據(jù)源集成Seata 時,主要是需要修改一下幾個配置即可。

多數(shù)據(jù)源中,開啟分布式事務(wù),設(shè)置事務(wù)模式:

  datasource:
    # 多數(shù)據(jù)源
    dynamic:
      # 省略其他 
      # 開啟分布式事務(wù)
      seata: true
      # 事務(wù)模式 為AT
      seata-mode: AT

seata 中,關(guān)閉數(shù)據(jù)源自動代理

seata:
  # 是否開啟spring-boot自動裝配,默認(rèn)true,包括數(shù)據(jù)源的自動代理以及GlobalTransactionScanner初始化
  enabled: true
  # 是否開啟數(shù)據(jù)源自動代理,默認(rèn)開啟
  enable-auto-data-source-proxy: false

3.3 測試

添加@GlobalTransactional注解。

    @GlobalTransactional
    @GetMapping("/test")
    public Object test() throws InterruptedException {
        accountTblService.reduceMoney();
        orderTblService.insertOrder();
        return "執(zhí)行完畢!";
    }

測試發(fā)現(xiàn),異常時,余額和訂單服務(wù)都進(jìn)行了回滾,集成成功。

到此這篇關(guān)于Seata集成Mybatis-Plus多數(shù)據(jù)源的文章就介紹到這了,更多相關(guān)Seata集成Mybatis-Plus多數(shù)據(jù)源內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論

乐至县| 佛坪县| 西充县| 海口市| 内江市| 遵化市| 紫阳县| 虹口区| 营口市| 鞍山市| 前郭尔| 彩票| 丘北县| 黄龙县| 丁青县| 贵南县| 沙田区| 仙桃市| 绥滨县| 渭源县| 铜梁县| 黄山市| 特克斯县| 湟中县| 宜章县| 安达市| 渭源县| 岑巩县| 安康市| 阳曲县| 林州市| 怀柔区| 漯河市| 神木县| 通河县| 成都市| 宁安市| 望江县| 新田县| 南华县| 丰镇市|