全部产品
存储与CDN 数据库 安全 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网

Sample-txc-edas 样例工程

更新时间:2017-08-02 10:33:37

业务逻辑说明

从 DecMoney 扣款,给 IncMoney 打款,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 应用。

前提条件

  1. 拥有 专业版铂金版 的 EDAS。

  2. 已在 GTS 控制台申请一个事务分组。

  3. 申请一个 MQ服务

  4. 需要三台 ECS 用于部署 EDAS 服务。详情请参见 EDAS Quick Start。需要按照 EDAS 要求安装 EDAS Agent 服务。

  5. 从 EDAS 控制台申请两个 EDAS 应用分组,分组名称分别为:txc-edas-drds-test,txc-edas-rds-test。

    特别说明:因为样例程序包含 DRDS 以及 RDS 的两个测试用例,所以客户可以根据需要申请 DRDS 或 RDS 服务。

    • 使用 EDAS+DRDS 用例,需要建表:txc_sample_edas_drds.sql。
    • 使用 EDAS+RDS 用例,需要建表:txc_undo_log.sql、txc_sample_edas_rds.sql。

案例搭建方法

  1. 对工程中所有的 RDS 和 DRDS 数据源、MQ 配置、GTS 组配置等进行相应修改。主要涉及的文件如下,对文件中 xxxxx 进行配置:

    1. sample-txc-edas/txc-money-service/src/main/resources/txc-datasource.xml
    2. sample-txc-edas/txc-level-service/src/main/resources/txc-datasource.xml
    3. sample-txc-edas/txc-client-web/src/main/resources/txc-2-client-drds.xml
    4. sample-txc-edas/txc-client-mq/src/main/resources/txc-2-client-rds.xml
    5. sample-txc-edas/txc-client-console/src/main/resources/txc-2-client-rds.xml

    注意:根据数据源的使用情况,可以有选择的配置数据源。

    • 如果您同时拥有 DRDS 数据源和 RDS 数据源,并在上述数据源配置文件中配置了它们,那么您服务发布后,您将同时有两个分组,一个是 DRDS 的,一个是 RDS 的。

    • 如果您只有 RDS 数据源,请删除下面文件中的 DRDS 配置内容:

      1. sample-txc-edas/txc-money-service/src/main/resources/txc-datasource.xml
      2. sample-txc-edas/txc-level-service/src/main/resources/txc-datasource.xml
      3. sample-txc-edas/txc-money-service/src/main/resources/hsf-provider-beans.xml
      4. sample-txc-edas/txc-level-service/src/main/resources/hsf-provider-beans.xml

      并将下面文件中的 version 字段由1.1.1改为1.1.2,所有“DRDS”替换为“RDS” 。

      1. sample-txc-edas/txc-client-web/src/main/resources/hsf-consumer-beans-drds.xml
    • 如果您使用的是 DRDS 数据源,请删除下面文件中的 RDS 配置内容:
      1. sample-txc-edas/txc-money-service/src/main/resources/txc-datasource.xml
      2. sample-txc-edas/txc-level-service/src/main/resources/txc-datasource.xml
      3. sample-txc-edas/txc-money-service/src/main/resources/hsf-provider-beans.xml
      4. sample-txc-edas/txc-level-service/src/main/resources/hsf-provider-beans.xml
      并将下面文件中的 version 字段由1.1.2改为1.1.1,所有“RDS”替换为“DRDS”:
      1. sample-txc-edas/txc-client-mq/src/main/resources/hsf-consumer-beans-rds.xml
      2. sample-txc-edas/txc-client-console/src/main/resources/hsf-consumer-beans-rds.xml
  2. 在 sample-txc-edas 目录下执行 build.sh 完成工程编译。通过 EDAS 控制台上传并启动下面三 个 war。

    1. sample-txc-edas/txc-level-service/target/txc-level-service.war
    2. sample-txc-edas/txc-money-service/target/txc-money-service.war
    3. sample-txc-edas/txc-client-web/target/txc-client-web.war
  3. 使用 webService 方式验证部署结果。

    1. 访问 txc-client-web 客户端应用的地址:http://ip:8080/txc-client-web/client

    2. 首先显示的是 inc_money,dec_money,level 三个表的当前值。

    3. 通过 reset 可以重置 dec_money 的初始值并清空 inc_money 和 level 表的值。

    4. 输入每次转款的金额数测试成功的全局事务和余额不足产生异常并回滚的全局事务。

  4. 使用 txc-client-console 子工程的 console 方式验证服务部署结果。

    1. 将 sample-txc-edas 整个工程拷贝到 ECS 服务器上,按步骤(4)修改参数配置,然后在 sample-txc-edas 目录下执行 build.sh 完成工程编译。

    2. 设置运行时环境变量,将下面的 xxxx 替换为自己的配置,可以咨询 EDAS 管理人员询问。

      1. 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"
    3. 在 sample-txc-edas/txc-client-console/client/bin 目录下执行 run.sh,可以看到执行结果。

  5. 使用 txc-client-mq 子工程的 console 方式验证综合了 MQ 业务的服务部署结果。

    1. 将 sample-txc-edas 整个工程拷贝到 ECS 服务器上,按步骤(4)修改参数配置,然后在 sample-txc-edas 目录下执行 build.sh 完成工程编译。

    2. 设置运行时环境变量,将下面的 xxxx 替换为自己的配置,可以咨询 EDAS 管理人员询问。

      1. 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"
    3. 在 sample-txc-edas/txc-client-mq/client/bin 目录下执行 run.sh,可以看到 MQ 的provider执行结果。

    4. 将 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 消息。

本文导读目录