<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                # seata整合案例 [TOC] ## **準備環境** 1. 創建四個數據庫,如下 ``` jeecg_order(訂單數據庫) jeecg_account(賬戶數據庫) jeecg_product(商品數據庫) seata(seata數據庫) ``` 以上數據庫腳本已存放至jeecg-cloud-test-seata示例中,文件位置如下圖所示 ![](https://img.kancloud.cn/ad/17/ad17d4b874133ebc948b3241d42ba1c6_372x87.png) ![](https://img.kancloud.cn/5f/a3/5fa3f475d82728df19df29126ef3ad4b_360x194.png) ![](https://img.kancloud.cn/eb/f7/ebf715a05f83ef2fdc450b5e380a06f1_349x174.png) ![](https://img.kancloud.cn/f6/59/f65967695ffbf1cc41d09734ca095a2b_368x189.png) 2. 示例代碼: jeecg-cloud-test-seata-order(下單服務) jeecg-cloud-test-seata-product(庫存服務) jeecg-cloud-test-seata-account(賬戶服務) 該示例場景用于下單時檢測庫存是否車充足,余額是否充足,有一個不滿足是則回滾事務 3. seata服務端:本次實踐的seata版本為v1.4.2,下載地址 [http://seata.io/zh-cn/blog/download.html](http://seata.io/zh-cn/blog/download.html) 安裝服務端 下載下來進行解壓,目錄結構如下: ![](https://img.kancloud.cn/cb/cd/cbcd27fb8c9723d49c8e527bc914852e_722x257.png) 進入bin目錄啟動seata,seata默認端口是8091 ![](https://img.kancloud.cn/f0/9e/f09ea5dc45376fe5581b6b5a027d3eb0_814x144.png) window下運行`seata-server.bat` linux下運行`seata-server.sh` ## **測試分布式事務** 1. 修改file.conf文件(如果需要使用nacos則修改type=nacos),如下圖 ![](https://img.kancloud.cn/9f/9a/9f9a09181ace41f4d8eb996d1d202878_923x512.png) 2. 修registry.conf(如果需要使用nacos則修改type=nacos),如下圖 ![](https://img.kancloud.cn/21/04/2104b12bc69448e6e20e343092f55e8a_1086x700.png) ![](https://img.kancloud.cn/9b/98/9b983803cfbda90901472b1f80c90837_1160x756.png) 3. 啟動seata,如下圖 ![](https://img.kancloud.cn/bd/83/bd833b147f7dd4228ba4d1e43e220476_849x308.png) 輸入如下信息后表示啟動成功 ![](https://img.kancloud.cn/64/f0/64f068a3a48e7f8f755868fb9a282be3_1321x743.png) 4.微服務模塊添加依賴,具體參考示例代碼 ~~~ <dependency> <groupId>org.jeecgframework.boot</groupId> <artifactId>jeecg-boot-starter-cloud</artifactId> <version>3.1.0</version> </dependency> <dependency> <groupId>org.jeecgframework.boot</groupId> <artifactId>jeecg-boot-starter-seata</artifactId> <version>3.1.0</version> </dependency> ~~~ 5.微服務模塊添加配置,具體參考示例代碼 ``` seata: enable-auto-data-source-proxy: false service: grouplist: default: 127.0.0.1:8091 vgroup-mapping: springboot-seata-group: default # seata 事務組編號 用于TC集群名 tx-service-group: springboot-seata-group ``` 6.啟動測試 依次啟動 jeecg-cloud-test-seata-order(下單服務) jeecg-cloud-test-seata-product(庫存服務) jeecg-cloud-test-seata-account(賬戶服務) 啟動完成如下圖 ![](https://img.kancloud.cn/2d/2b/2d2bf2b543ab1083299f0abb8af7c233_744x193.png) 瀏覽器輸入http://localhost:5001 即可進行測試,如下圖所示 測試正常下參數見截圖 ![](https://img.kancloud.cn/2f/75/2f7529ae27d9319c3766ef93877a8c44_1077x653.png) 測試余額不足,測試庫存不足,然后觀察數據庫訂單表插入數據是否回滾 注:本示例不通過網關所以需要排除認證權限ShiroConfig.java添加如下代碼 ~~~ //測試模塊排除 filterChainDefinitionMap.put("/test/seata/**", "anon"); ~~~ 可使用nacos作為seata的配置中心 新建seataServer.properties配置文件內容如下 ``` # 數據存儲方式,db代表數據庫 store.mode=db store.db.datasource=druid store.db.dbType=mysql store.db.driverClassName=com.mysql.cj.jdbc.Driver store.db.url=jdbc:mysql://localhost:3300/seata?useUnicode=true&rewriteBatchedStatements=true&serverTimezone=Asia/Shanghai store.db.user=root store.db.password=root store.db.minConn=5 store.db.maxConn=30 store.db.globalTable=global_table store.db.branchTable=branch_table store.db.queryLimit=100 store.db.lockTable=lock_table store.db.maxWait=5000 # 事務、日志等配置 server.recovery.committingRetryPeriod=1000 server.recovery.asynCommittingRetryPeriod=1000 server.recovery.rollbackingRetryPeriod=1000 server.recovery.timeoutRetryPeriod=1000 server.maxCommitRetryTimeout=-1 server.maxRollbackRetryTimeout=-1 server.rollbackRetryTimeoutUnlockEnable=false server.undo.logSaveDays=7 server.undo.logDeletePeriod=86400000 # 客戶端與服務端傳輸方式 transport.serialization=seata transport.compressor=none # 關閉metrics功能,提高性能 metrics.enabled=false metrics.registryType=compact metrics.exporterList=prometheus metrics.exporterPrometheusPort=9898 ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看