该样例工程介绍 AT 模式下,非 Spring 框架下如何通过 GTS 保证跨数据库转账的分布式事务的一致性。

前提条件

在使用样例前,请先完成以下工作:
  • 准备两个 RDS 实例,用户创建数据库。
  • 准备一个 ECS 实例,用于部署本样例。

样例逻辑说明

从 A 账户向 B 账户转账,如果为负值则抛出应用异常,导致全局事务回滚。

搭建样例

  1. 在两个数据库分别执行 txc_sample1.sqltxc_sample2.sqltxc_undo_log.sql,创建 txc_undo_log 表。
  2. 下载样例 txc-yun-sample并上传到 ECS 上。
  3. 在 IDE 中修改样例配置。
    1. 找到并打开 SpringFreeClient.java 文件,在 txcTransactionScaner 方法中修改 GTS 的逻辑组名。
      事务逻辑组名需要使用包含 ID 和 Region 信息的全名,例如 gtstest.432242345522.HZ
    2. 找到并打开 SpringFreeClient.java 文件,将 accessKeysecretKey 的值修改为您实际账号的值。
      说明 请使用主账户的Access Key ID和Access Key Secret。如果使用RAM子账户的Access Key ID和Access Key Secret,需要先使用主账户对子账户进行授权。
    3. 找到并打开 SpringFreeClient.java 文件,将两个数据库的 urlusernamepassword 的值修改为您实际使用的值。
    Java 源代码在 /sample-txc-simple-springfree/src/main/java/com/taobao/txc/tests 目录下,可以根据业务需求修改。
  4. 运行 mvn package -Dmaven.test.skip=true –Ptest 命令,生成 JAR 包 pay.jar
  5. sample-txc-simple-springfree 目录下执行 build.sh 编译本工程。

结果验证

编译完成后,在 sample-txc-simple-springfree/client/bin 目录下执行 run.sh,可以看到运行结果。