今天主要讲解阿里的GTS分布式事务的使用。这里以阿里云上的demo为例讲解。demo案例的描述有一些问题。这篇文章主要针对案例里的问题做讲解。还有案例的运行流程做讲解
sample-txc-simple:最简的 GTS 样例工程
该工程给出了一个最少依赖的 GTS 案例,GTS 使用入门必看。您可以基于 sample-txc-simple 样例工程,分别在阿里云网络及公网中搭建。
工程地址 点此下载
案例从阿里云拉下来将sample-txc-simple项目导入到idea中格式如下
此时我们按照阿里云给的提示本地运行的话会报错如下
PreparedStatementCallback; uncategorized SQLException for SQL [update user_money_a
set money = money - ?]; SQL state [null]; error code [0]; com.taobao.txc.common.b
.d: [xid:11.193.82.112:8091:249323421]get tablemeta failed; nested exception is
java.sql.SQLException: com.taobao.txc.common.b.d: [xid:11.193.82.112:8091:
249323421]gettablemeta failed
这个错是因为我们使用的数据库是阿里云上的数据库,此时你需要配置这些变量
<!---阿里云环境下:GTS Scanner配置方式-->
<!-- <bean class="com.taobao.txc.client.aop.TxcTransactionScaner">-->
<!-- <constructor-arg value="myapp"/><!– 应用自定义的标识 –>-->
<!-- <constructor-arg value="mygroup.xxxx.xx"/><!– 事务分组(全名) –>-->
<!-- <property name="accessKey" value="xxx"/>-->
<!-- <property name="secretKey" value="xxx"/>-->
<!-- </bean>-->
如果你是本地运行的话,需要使用本地的数据源配置,不能配置阿里云的数据库
如果你修改配置了还是运行不起来的话,你可以尝试将txc-client发布到本地仓库
mvn install:install-file -Dfile=txc-client-2.8.18.jar -DgroupId=com.taobao.txc -DartifactId=txc-client -Dversion=2.8.18 -Dpackaging=jar
修改工程中的pom.xml
将txc-client的jar包路径由
<dependency>
<groupId>com.taobao.txc</groupId>
<artifactId>txc-client</artifactId>
<version>${txc-version}</version>
<scope>system</scope>
<systemPath>${basedir}/../lib/${txc-sdk-package-name}</systemPath>
</dependency>
改为
<dependency>
<groupId>com.taobao.txc</groupId>
<artifactId>txc-client</artifactId>
<version>${txc-version}</version>
</dependency>
此时运行结果如下