该样例综合了 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 消息。