1.2.0版本seata整合nacos實現分佈式事務(2)

    上一篇  https://my.oschina.net/u/3901188/blog/4316832  已經完成了 Seata 的服務端 整合 nacos 的搭建啓動。本篇章記錄 Seata 客戶端實現模擬分佈式事務場景。git

 

    分佈式事務場景準備:客戶端分三個服務 order訂單服務、storage庫存服務、account帳戶餘額服務。三個服務對應的獨立的數據庫。sql

    庫須要自行創建,我這裏建立的名稱爲 seata_order、seata_account、seata_storage 三個庫名稱。sql的建庫建表語句我都寫代在項目的sql文件夾中。數據庫

    寫在這裏太過於長了,太佔地方了,項目demo我直接打包上傳上碼雲了。項目地址連接: https://gitee.com/maogouxiong/seata-nacos-test-demo     須要的夥伴能夠上去下載下來自行測試。瀏覽器

    

    這裏我主要關鍵點:mybatis

        項目我使用了 mybatis-plus 的代碼生成器直接生成代碼。代碼生成器類我放在了每一個服務項目的test目錄下。分佈式

        另外代理數據源是要配置的。在代碼裏面每一個服務都有配置代理數據源,須要留意看下工具

        我這裏測試 Seata 服務端是經過源碼啓動的。源碼啓動看下我上一篇文章有講到。post

        先啓動 Seata 服務端,當 Seata 服務端啓動成功,啓動日誌是這樣的:測試

       而後啓動 三個客戶端服務, 當 order訂單服務、storage庫存服務、account帳戶餘額服務 三個服務啓動成功,啓動日誌是下三圖所示:spa

 

        三個服務啓動成功後,Seata 服務端是收到對應的通知:

 

        而後分佈式事務流程是這樣的:

       一、瀏覽器或者postman測試工具訪問 order服務建立訂單。

       二、order服務建立訂單過程當中,使用 Feign 遠程調用庫存服務進行減庫存,調用用戶餘額服務進行減餘額。
        
       三、接着order服務更新訂單狀態。 最後模擬出現異常 int a = 1/0 ,seata 實現分佈式事務回滾。 

        整個過程當中,只須要在遠程調用方的方法上加上 @GlobalTransactional(rollbackFor = Exception.class) 註解便可。

    原始的數據:

    

   

    正常commit事務:

    數據庫數據變化:

    

    三個服務日誌輸出:

    

    

    Seata 服務端:

    

   

    失敗回滾事務:

    數據庫數據沒變化:

    

    三個服務日誌輸出:

    Seata 服務端:

    

相關文章
相關標籤/搜索