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

配置应用代码

更新时间:2017-06-28 11:21:45

通过审批的事务分组可以用于客户的应用代码中,客户需引入 GTS SDK 开发包,并添加依赖。

操作步骤

  1. 在 Spring 的配置文件中将申请好的事务分组名配置到 com.taobao.txc.client.aop.TxcTransactionScaner bean 中,并将阿里云账户中的 Access Key ID 和 Access Key Secret 配置到 accessKey 和 secretKey 两个属性上,如:

    1. <bean class="com.taobao.txc.client.aop.TxcTransactionScaner">
    2. <constructor-arg value="test111.1325460969176422.BJ"/>
    3. <property name="accessKey" value="xxxx"/>
    4. <property name="secretKey" value="xxxx"/>
    5. </bean>
  2. 在需要启动全局事务的方法前添加 @TxcTransaction(appName=“myapp”) 注解,其中 appName 的值为前面提到的事务别名,后面会自动在 GTS 控制台上显示。

    1. @TxcTransaction(appName = "myapp")
    2. public void hello() {
    3. ...
    4. }
  3. 在 Spring 配置文件中将用到的含有 @TxcTransaction 注解的应用类声明一下,并使用这个 bean 的实例调用注解方法。如:

    1. <bean id="bussiness" class="com.taobao.txc.tests.Bussiness" init-method="init">
    2. </bean>
    1. Bussiness bussiness = (Bussiness) context.getBean("bussiness");
    2. //用实例化的 bean 调用 GTS 注解方法 hello,让 hello 方法内的操作加入一个 GTS 事务。
    3. bussiness.hello();
  4. 如果使用的数据源是 RDS、MySQL,需要配置为 GTS 的数据源,如:

    1. <bean id="DataSource_rds" class="com.taobao.txc.datasource.cobar.TxcDataSource">
    2. <property name="url" value="jdbc:mysql://xxxxx" />
    3. <property name="username" value="xxx" />
    4. <property name="password" value="xxx" />
    5. <property name="driverClassName" value="com.mysql.jdbc.Driver" />
    6. </bean>
  5. 在加入 GTS 事务的所有数据库中建表 txc_undo_log。

    DRDS 除外,因为 DRDS 已经自动建表 txc_undo_log,但建议检查该表是否存在,如果不存在仍需建表。

    1. CREATE TABLE `txc_undo_log` (
    2. `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
    3. `gmt_create` datetime NOT NULL COMMENT '创建时间',
    4. `gmt_modified` datetime NOT NULL COMMENT '修改时间',
    5. `xid` varchar(100) NOT NULL COMMENT '全局事务 ID',
    6. `branch_id` bigint(20) NOT NULL COMMENT '分支事务 ID',
    7. `rollback_info` longblob NOT NULL COMMENT 'LOG',
    8. `status` int(11) NOT NULL COMMENT '状态',
    9. `server` varchar(32) NOT NULL COMMENT '分支所在 DB IP',
    10. PRIMARY KEY (`id`),
    11. KEY `unionkey` (`xid`,`branch_id`)
    12. ) ENGINE=InnoDB AUTO_INCREMENT=211225994 DEFAULT CHARSET=utf8 COMMENT='事务日志表';

结果验证

通过上述 GTS 配置可以将多个数据源加入一个事务中,多个数据源中的数据会保持强一致,一旦有异常返回给带 @TxcTransaction 注解的方法,都会导致这个全局事务数据回滚到之前的状态。

本文导读目录