欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

1 前言

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

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

在這里插入圖片描述

2 問(wèn)題場(chǎng)景

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

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

    @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ù)操作時(shí),訂單發(fā)生異常 ,進(jìn)行了回滾操作,因?yàn)樵诓煌臄?shù)據(jù)庫(kù)實(shí)例中,余額卻扣除成功,此時(shí)發(fā)現(xiàn)數(shù)據(jù)不一致問(wèn)題。

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

3.1 集成Nacos Seata

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

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

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

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

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

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

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

3.3 測(cè)試

添加@GlobalTransactional注解。

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

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

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

相關(guān)文章

  • java之路徑分隔符介紹

    java之路徑分隔符介紹

    考慮到程序的可移植性,創(chuàng)建文件時(shí)建議大家選用"/",因?yàn)榻?jīng)過(guò)測(cè)試用java創(chuàng)建文件時(shí)在windows平臺(tái)下用“/”也是可以的,java貌似在后臺(tái)作過(guò)處理了。
    2013-03-03
  • SpringMVC實(shí)現(xiàn)controller中獲取session的實(shí)例代碼

    SpringMVC實(shí)現(xiàn)controller中獲取session的實(shí)例代碼

    本篇文章主要介紹了SpringMVC實(shí)現(xiàn)controller中獲取session的實(shí)例代碼,具有一定的參考價(jià)值,有興趣的可以了解一下。
    2017-02-02
  • 詳解IDEA使用Maven項(xiàng)目不能加入本地Jar包的解決方法

    詳解IDEA使用Maven項(xiàng)目不能加入本地Jar包的解決方法

    這篇文章主要介紹了詳解IDEA使用Maven項(xiàng)目不能加入本地Jar包的解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • Java框架學(xué)習(xí)Struts2復(fù)選框?qū)嵗a

    Java框架學(xué)習(xí)Struts2復(fù)選框?qū)嵗a

    這篇文章主要介紹了Java框架學(xué)習(xí)Struts2復(fù)選框?qū)嵗a,分享了相關(guān)代碼示例,小編覺(jué)得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-02-02
  • idea2019.2安裝MybatisCodeHelper插件的超詳細(xì)教程

    idea2019.2安裝MybatisCodeHelper插件的超詳細(xì)教程

    這篇文章主要介紹了idea2019.2安裝MybatisCodeHelper插件的教程,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-09-09
  • 淺談SpringBoot優(yōu)化技巧

    淺談SpringBoot優(yōu)化技巧

    這篇文章主要介紹了淺談SpringBoot優(yōu)化技巧,需要的朋友可以參考下。
    2017-09-09
  • 關(guān)于Java中重定向傳參與取值

    關(guān)于Java中重定向傳參與取值

    這篇文章主要介紹了Java中重定向傳參與取值問(wèn)題,重定向不僅可以重定向到當(dāng)前應(yīng)用程序中的其他資源,還可以重定向到同一個(gè)站點(diǎn)上的其他應(yīng)用程序中的資源,甚至是使用絕對(duì)URL重定向到其他站點(diǎn)的資源,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-05-05
  • MyBatisPlus自定義SQL的實(shí)現(xiàn)

    MyBatisPlus自定義SQL的實(shí)現(xiàn)

    MyBatisPlus提供了自定義SQL功能,允許開(kāi)發(fā)者在Mapper接口中定義方法,并通過(guò)XML文件或注解編寫(xiě)SQL語(yǔ)句,本文詳解了如何在MP中使用自定義SQL,感興趣的可以了解一下
    2024-09-09
  • springboot配置多數(shù)據(jù)源的一款框架(dynamic-datasource-spring-boot-starter)

    springboot配置多數(shù)據(jù)源的一款框架(dynamic-datasource-spring-boot-starter

    dynamic-datasource-spring-boot-starter 是一個(gè)基于 springboot 的快速集成多數(shù)據(jù)源的啟動(dòng)器,今天通過(guò)本文給大家分享這款框架配置springboot多數(shù)據(jù)源的方法,一起看看吧
    2021-09-09
  • CountDownLatch基于AQS阻塞工具用法詳解

    CountDownLatch基于AQS阻塞工具用法詳解

    這篇文章主要為大家介紹了CountDownLatch基于AQS阻塞工具用法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06

最新評(píng)論