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

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

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

点击创建事物分组

阿里分布式事物GTS的使用 spingboot springcloud 上的使用_第1张图片

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

阿里分布式事物GTS的使用 spingboot springcloud 上的使用_第2张图片

阿里gts所需的pom.xml


		
			com.taobao.txc
			txc-client
			2.0.72
			system
			${basedir}/src/main/java/lib/txc-client-2.0.72.jar
		
		
			org.springframework
			spring-context
			5.0.9.RELEASE
		
		
			com.alibaba.dauth
			sdk-client
			1.2.3
		
		

		
			cglib
			cglib
			3.1
		
		
			io.netty
			netty-all
			4.1.0.Final
		
		
			com.taobao.middleware
			logger.api
			0.1.5
		
		
			com.taobao.diamond
			diamond-client
			edas-3.7.3
		

		
			ch.qos.logback
			logback-core
			1.1.7
		

这里需要阿里的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

阿里分布式事物GTS的使用 spingboot springcloud 上的使用_第3张图片

在你的代码中,使用阿里的分布式事物注解 @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

 

你可能感兴趣的:(springboot,springcloud)