阿里分布式事物GTS的使用 spingboot springcloud 上的使用

阿里的分布式事物gts目前是收费的,具体收费规则和使用文档参见:https://help.aliyun.com/document_detail/69394.html

使用步骤,首先需要去开通阿里的分布式事物gts,登录阿里云的管理控制台:https://txc.console.aliyun.com/app/index.htm

点击创建事物分组

填上自己的事物分组,创建成功后会生成你的分组名称,例如 mygts.1108003305224791.SH

阿里gts所需的pom.xml

<!-- TXC -->
		<dependency>
			<groupId>com.taobao.txc</groupId>
			<artifactId>txc-client</artifactId>
			<version>2.0.72</version>
			<scope>system</scope>
			<systemPath>${basedir}/src/main/java/lib/txc-client-2.0.72.jar</systemPath>
		</dependency>
		<dependency>
			<groupId>org.springframework</groupId>
			<artifactId>spring-context</artifactId>
			<version>5.0.9.RELEASE</version>
		</dependency>
		<dependency>
			<groupId>com.alibaba.dauth</groupId>
			<artifactId>sdk-client</artifactId>
			<version>1.2.3</version>
		</dependency>
		<!-- OTHERS -->

		<dependency>
			<groupId>cglib</groupId>
			<artifactId>cglib</artifactId>
			<version>3.1</version>
		</dependency>
		<dependency>
			<groupId>io.netty</groupId>
			<artifactId>netty-all</artifactId>
			<version>4.1.0.Final</version>
		</dependency>
		<dependency>
			<groupId>com.taobao.middleware</groupId>
			<artifactId>logger.api</artifactId>
			<version>0.1.5</version>
		</dependency>
		<dependency>
			<groupId>com.taobao.diamond</groupId>
			<artifactId>diamond-client</artifactId>
			<version>edas-3.7.3</version>
		</dependency>

		<dependency>
			<groupId>ch.qos.logback</groupId>
			<artifactId>logback-core</artifactId>
			<version>1.1.7</version>
		</dependency>

这里需要阿里的gtx的jar包,https://download.csdn.net/download/huqiankunlol/11045438

然后我们需要配置 gtxconfig

@Configuration
public class GTXConfig {

    //定义声明式事务,要想让事务annotation感知的话,要在这里定义一下
    @Bean(name = "txcScanner")
    @ConfigurationProperties(prefix="aluser")
    public TxcTransactionScaner txcTransactionScaner()
    {
        //xxxx填写txc的逻辑组名
       return  new TxcTransactionScaner("xxxx");
    }
}

这里还需要设置你的访问密钥和私钥,在你的阿里云控制台设置,然后配置在你的配置文件中

aluser.accessKey=xxxx
aluser.secretKey=xxxxxxxx

在你的代码中,使用阿里的分布式事物注解 @TxcTransaction

    @Autowired
    AccDAO adao;
	
	@Autowired
    AccTwoDAO atdao;
	
    @TxcTransaction
    public void transferAccount(int money){
        
		adao.setmoney(money);
		
		acdao.setmoney(money);
		
    }

这里采用的是多数据源,两个dao连接的是不同的数据库,多数据配置参见 https://blog.csdn.net/huqiankunlol/article/details/88550230 ,这里主要配置已经完成,接下来发布到你的ecs服务器测试即可

如果采用springcloub分布式,需要在服务消费者得到 xid ,服务提供者处绑定 xid

    @RequestMapping("bumen")
    @TxcTransaction(timeout = 1000 * 12)
    public  String  getbumen(String name){
         
        String xid = TxcContext.getCurrentXid();
        System.out.println("xid:"+xid);
         //调用  Remote 远程服务
        String str=bumenRemote.getlistAll(xid);
        userinfoMapper.updateMoney();
       
        return  "hello 这是是服务调用返回的:"+str;
    }

在服务提供者处,绑定xid

    @RequestMapping("bumen/getlistAll")
    public String getlist(String xid){
       try{
           TxcContext.bind(xid, null);
           System.out.println("xid:"+xid);
           bumenMapper.updateMoney();
           // System.out.println(1/0);
       }finally {
           TxcContext.unbind();
       }

        return "成功";
    }

分布式事物阿里官方demo下载地址:http://txc-console.oss-cn-beijing.aliyuncs.com/example/txc-yun-sample.zip?spm=a2c4g.11186623.2.14.79121cbeJqu1yD&file=txc-yun-sample.zip

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值