該樣例綜合了 GTS、EDAS 及 MQ 的使用,通過 Console 和 Web 兩種方式充分展現了用戶的使用場景,是 EDAS 上部署 GTS 的進階樣例,幫助您更全面的理解 GTS 的使用場景。
前提條件
- 開通EDAS說明 需要開通專業版或鉑金版。
- 開通 GTS(創建事務分組)
- 在 EDAS 控制臺創建或導入 3 個 ECS 實例,詳情請參見創建ECS實例,用于部署樣例中的 3 個服務。
樣例邏輯說明
DecMoney 賬號向 IncMoney 賬號轉賬,IncMoney 會根據當前賬號余額更新用戶相應的 Level。業務為了模擬應用異常產生,故意先給 IncMoney 打款,然后從 DecMoney 扣款后檢查 DecMoney 余額,如果為負值則拋出應用異常導致全局事務回滾。
該業務的展現方式有兩種,分別是 Web 方式和 Console 方式。此外,還提供了一種帶有 MQ 操作的 Console 方式客戶端。
樣例模塊說明
本樣例主要包含以下幾個子工程:
- txc-client-web:EDAS+GTS 的 MVC 客戶端 Spring Mvc,用 Web 方式展現業務邏輯。
- txc-client-console:EDAS+GTS 的 Console 客戶端,用 Console 的方式展現業務邏輯。
- txc-client-mq:EDAS+GTS+MQ 的 Console 客戶端,用 Console 的方式展現綜合了 EDAS 和 MQ 的業務邏輯。
- txc-edas-api:DecMoney、 IncMoney 、UpdateStarLevel 服務接口定義。
- txc-level-service:UpdateStarLevel 的 EDAS 服務端應用(WAR)。
- txc-money-service:IncMoney,DecMoney 的 EDAS 服務端應用(WAR)。
搭建樣例
結果驗證
本樣例提供了 WebService 和 Console 兩種驗證方式,Console 又可以使用 txc-client-console 和 txc-client-mq 兩個子工程驗證。
- 使用 WebService 驗證部署結果
- 使用瀏覽器訪問地址 http://ip:8080/txc-client-web/client。
顯示 inc_money、dec_money 和 level 三個表的當前值。
- 通過 reset 可以重置 dec_money 的初始值并清空 inc_money 和 level 表的值。
- 輸入每次轉款的金額數測試成功的全局事務和余額不足產生異常并回滾的全局事務。
- 使用瀏覽器訪問地址 http://ip:8080/txc-client-web/client。
- 使用 Console 驗證部署結果
- 使用 txc-client-console 子工程驗證:
- 將 sample-txc-edas 工程上傳到 ECS 上。
- 修改數據源配置。
- 在 sample-txc-edas 目錄下執行 build.sh, 編譯樣例工程。
- 設置運行時環境變量,將下面的各參數的值(xxxx)替換為實際配置。如果需要,可以咨詢 EDAS 技術支持人員。
export JAVA_OPTS="-Dproject.name=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx -Dtenant.id=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx -Dspas.identity=/home/admin/.spas_key/default -Daddress.server.domain=xxxx -Daddress.server.port=xxxx -Dconfigserver.client.port=xxxx -DJM.LOG.RETAIN.COUNT=7 -DJM.LOG.FILE.SIZE=300MB"
- 在 sample-txc-edas/txc-client-console/client/bin 目錄下執行 run.sh,查看執行結果。
- 使用 txc-client-mq 子工程驗證:
- 將 sample-txc-edas 工程上傳到 ECS 上。
- 修改數據源配置。
- 在 sample-txc-edas 目錄下執行 build.sh, 編譯樣例工程。
- 設置運行時環境變量,將下面的各參數的值(xxxx)替換為實際配置。如果需要,可以咨詢 EDAS 技術支持人員。
export JAVA_OPTS="-Dproject.name=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx -Dtenant.id=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx -Dspas.identity=/home/admin/.spas_key/default -Daddress.server.domain=xxxx -Daddress.server.port=xxxx -Dconfigserver.client.port=xxxx -DJM.LOG.RETAIN.COUNT=7 -DJM.LOG.FILE.SIZE=300MB"
- 在 sample-txc-edas/txc-client-mq/client/bin 目錄下執行 run.sh,查看 MQ 的 Provider 執行結果。
- 將 sample-mq-consumer 工程上傳到 ECS。
- 在 sample-mq-consumer/src/main/java/com/taobao/txc/tests 路徑打開 SMSListener.java,修改其中的 xxxxx 為申請的 MQ 配置。
- 在 sample-mq-consumer 目錄下執行 build.sh,編譯該樣例工程。
- 編譯完成后,在 sample-mq-consumer/client/bin 目錄下執行 run.sh,可以消費掉剛剛 sample-txc-edas/txc-client-mq 工程生產出來的 MQ 消息。
- 使用 txc-client-console 子工程驗證:
執行結果
-
使用 webService 方式驗證部署結果。
-
訪問 txc-client-web 客戶端應用的地址:http://ip:8080/txc-client-web/client
-
首先顯示的是 inc_money,dec_money,level 三個表的當前值。
-
通過 reset 可以重置 dec_money 的初始值并清空 inc_money 和 level 表的值。
-
輸入每次轉款的金額數測試成功的全局事務和余額不足產生異常并回滾的全局事務。
-
-
使用 txc-client-console 子工程的 console 方式驗證服務部署結果。
-
將 sample-txc-edas 整個工程拷貝到 ECS 服務器上,按步驟(4)修改參數配置,然后在 sample-txc-edas 目錄下執行 build.sh 完成工程編譯。
-
設置運行時環境變量,將下面的 xxxx 替換為自己的配置,可以咨詢 EDAS 管理人員詢問。
-
export JAVA_OPTS="-Dproject.name=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx -Dtenant.id=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx -Dspas.identity=/home/admin/.spas_key/default -Daddress.server.domain=xxxx -Daddress.server.port=xxxx -Dconfigserver.client.port=xxxx -DJM.LOG.RETAIN.COUNT=7 -DJM.LOG.FILE.SIZE=300MB"
-
在 sample-txc-edas/txc-client-console/client/bin 目錄下執行 run.sh,可以看到執行結果。
-
使用 txc-client-mq 子工程的 console 方式驗證綜合了 MQ 業務的服務部署結果。
-
將 sample-txc-edas 整個工程拷貝到 ECS 服務器上,按步驟(4)修改參數配置,然后在 sample-txc-edas 目錄下執行 build.sh 完成工程編譯。
-
設置運行時環境變量,將下面的 xxxx 替換為自己的配置,可以咨詢 EDAS 管理人員詢問。
export JAVA_OPTS="-Dproject.name=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx -Dtenant.id=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx -Dspas.identity=/home/admin/.spas_key/default -Daddress.server.domain=xxxx -Daddress.server.port=xxxx -Dconfigserver.client.port=xxxx -DJM.LOG.RETAIN.COUNT=7 -DJM.LOG.FILE.SIZE=300MB"
-
在 sample-txc-edas/txc-client-mq/client/bin 目錄下執行 run.sh,可以看到 MQ 的provider執行結果。
-
將 sample-mq-consumer 工程拷貝到 ECS 服務器中,在 sample-mq-consumer/src/main/java/com/taobao/txc/tests 中找到 SMSListener.java,修改其中的 xxxxx 為申請的 MQ 配置。在 sample-mq-consumer 目錄下執行 build.sh 編譯該工程,編譯完成后在 sample-mq-consumer/client/bin 目錄下執行 run.sh 可以消費掉剛剛 sample-txc-edas/txc-client-mq 工程生產出來的 MQ 消息。