该样例工程介绍 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,可以看到运行结果。