該樣例工程介紹 AT 模式下,非 Spring 框架下如何通過 GTS 保證跨數據庫轉賬的分布式事務的一致性。
前提條件
在使用樣例前,請先完成以下工作:
- 準備兩個 RDS 實例,用戶創建數據庫。
- 準備一個 ECS 實例,用于部署本樣例。
樣例邏輯說明
從 A 賬戶向 B 賬戶轉賬,如果為負值則拋出應用異常,導致全局事務回滾。
搭建樣例
- 在兩個數據庫分別執行 txc_sample1.sql、txc_sample2.sql 和 txc_undo_log.sql,創建 txc_undo_log 表。
- 下載樣例 txc-yun-sample并上傳到 ECS 上。
- 在 IDE 中修改樣例配置。
- 找到并打開 SpringFreeClient.java 文件,在 txcTransactionScaner 方法中修改 GTS 的邏輯組名。
事務邏輯組名需要使用包含 ID 和 Region 信息的全名,例如 gtstest.432242345522.HZ。
- 找到并打開 SpringFreeClient.java 文件,將 accessKey 和 secretKey 的值修改為您實際賬號的值。
說明 請使用主賬戶的Access Key ID和Access Key Secret。如果使用RAM子賬戶的Access Key ID和Access Key Secret,需要先使用主賬戶對子賬戶進行授權。
- 找到并打開 SpringFreeClient.java 文件,將兩個數據庫的 url、username和 password 的值修改為您實際使用的值。
Java 源代碼在 /sample-txc-simple-springfree/src/main/java/com/taobao/txc/tests 目錄下,可以根據業務需求修改。
- 運行
mvn package -Dmaven.test.skip=true –Ptest
命令,生成 JAR 包 pay.jar。
- 在 sample-txc-simple-springfree 目錄下執行 build.sh 編譯本工程。
結果驗證
編譯完成后,在 sample-txc-simple-springfree/client/bin 目錄下執行 run.sh,可以看到運行結果。