当您在使用 GTS 时,需要关注相关的注意事项。
GTS 事务分组应与业务系统在同一个地域
GTS 不支持跨地域访问。创建事务分组时,需要选择和业务系统相同的地域,否则使用时会显示连不上 GTS Server。
GTS 注解方法的调用
建议在当前方法中直接实例化 @TxcTransaction
注解的方法类,并直接调用,保证 GTS 事务生效,且代码直观。
GTS 注解方法的调用包含以下三点注意事项:
- 带有
@TxcTransaction
注解的方法可以在其他的类中被调用,但需要显式的指定的 Spring bean 实例。 - 如果
@TxcTransaction
注解方法在本类的其他方法中被调用,需要显式指定实例。 - 开启事务只能直接调用使用 Spring bean 实例化的类的
@TxcTransaction
注解方法。
示例如下。
class SampleClient { /* 此类已经被声明为Spring bean */
//此方法被声明为GTS事务
@TxcTransaction(timeout = 60000)
void dataUpdate(Connection con1, Connection con2) {
// 操作数据源con
update1(con1);
update2(con2);
}
public void callUpdate1(Connection con1, Connection con2){
dataUpdate(con1,con2);
}
public void callUpdate2(Connection con1, Connection con2, SampleClient clienttest){
clienttest.dataUpdate(con1,con2);
}
public static void main(String[] args){
SampleClient clienttest1 = (SampleClient)context.getBean("clientTest");
Connection con1=getCon1();
Connection con2=getCon2();
clienttest1.dataUpdate(con1,con2);// 这个是正确的调用,最佳实践
SampleClient clienttest2 = new SampleClient();
clienttest2.dataUpdate(con1,con2);// 这个是错误的调用,不能开启GTS事务
clienttest1.callUpdate1(con1,con2); // 这个是错误的调用,不能开启GTS事务
clienttest1.callUpdate2(con1,con2, clienttest1);// 这个是正确的调用,但是不推荐使用
}
}
class UseSampleClient {
void updateSampleClient(){
SampleClient clienttest1 = (SampleClient)context.getBean("clientTest");
clienttest1.dataUpdate(con1,con2);// 这个是正确的调用,最佳实践
SampleClient clienttest2 = new SampleClient();
clienttest2.dataUpdate(con1,con2);// 这个是错误的调用,不能开启GTS事务
}
}
AT 模式注意事项
AT 模式注意事项请参见AT 模式接入注意事项。
TCC 模式注意事项
TCC 模式注意事项请参见TCC 模式接入注意事项。
SAE 环境注意事项
非公网测试环境(线上正式环境)需要配置 URL 参数 https://cs2.gts.aliyuncs.com。
- 使用 txc-client.jar
<bean class="com.taobao.txc.client.aop.TxcTransactionScaner"> <constructor-arg value="myapp"/><!-- 应用自定义的标识 --> <constructor-arg value="mygroup.xxxx.xx"/><!-- 事务分组(全名) --> <constructor-arg type="int" value="1"/> <constructor-arg value="https://cs2.gts.aliyuncs.com"/> <property name="accessKey" value="xxx"/> <property name="secretKey" value="xxx"/> </bean>
- 使用 txc-client-springcloud.jar
在 properties 配置文件添加 spring.cloud.txc.url=https://cs2.gts.aliyuncs.com。