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