Java小强个人技术博客站点    手机版
当前位置: 首页 >> Java >> Seata之XA 模式的使用

Seata之XA 模式的使用

34310 Java | 2022-2-7

Seata 是一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式事务服务。在 Seata 开源之前,Seata 对应的内部版本在阿里经济体内部一直扮演着分布式一致性中间件的角色,帮助经济体平稳的度过历年的双11,对各BU业务进行了有力的支撑。经过多年沉淀与积累,商业化产品先后在阿里云、金融云进行售卖。2019.1 为了打造更加完善的技术生态和普惠技术成果,Seata 正式宣布对外开源,未来 Seata 将以社区共建的形式帮助其技术更加可靠与完备。

Spring Cloud中使用Seata使用 Feign 实现远程调用。

Windows上安装Seata服务http://www.javacui.com/tool/622.html 


XA模式,官方说明

http://seata.io/zh-cn/docs/dev/mode/xa-mode.html 

官方参考

https://github.com/seata/seata-samples/tree/master/seata-xa 


POM引入

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-seata</artifactId>
    <exclusions>
        <!--版本较低,1.3.0,因此排除-->
        <exclusion>
            <artifactId>seata-spring-boot-starter</artifactId>
            <groupId>io.seata</groupId>
        </exclusion>
    </exclusions>
</dependency>
<!--seata starter 采用1.4.2版本-->
<dependency>
    <groupId>io.seata</groupId>
    <artifactId>seata-spring-boot-starter</artifactId>
    <version>1.4.2</version>
</dependency>


需要修改application.yml文件,添加一些配置:

seata:
  data-source-proxy-mode: XA
  registry: # TC服务注册中心的配置,微服务根据这些信息去注册中心获取tc服务地址
    # 参考tc服务自己的registry.conf中的配置
    type: nacos
    nacos: # tc
      server-addr: 192.168.2.22:8848
      username: nacos
      password: nacos
      namespace: "" # 命名空间,默认public
      group: DEFAULT_GROUP # 分组,默认DEFAULT_GROUP
      application: seata-server # tc服务在nacos中的服务名称
  tx-service-group: seata-demo # 事务组,根据这个获取tc服务的cluster名称
  service:
    vgroup-mapping: # 事务组与TC服务cluster的映射关系
      seata-demo: DEFAULT

买个需要用到分布式事务的模块都要加入该配置


用@GlobalTransactional注解,替换原来Spring的@Transactional事务注解。

注意,只需要在入口模块的方法上,即发起全局事务的入口方法上改即可。


测试地址


http://localhost:8082/order?userId=user202103032042012&commodityCode=100202003032041&count=20&money=200


如果你无法打开github,或者对上面的配置有疑问,可以下载如下源码参考

seata-xa.zip


seata-demo.zip

一个是官方参考,一个是本示例使用的代码,里面有建库的SQL语句。

推荐您阅读更多有关于“ Seata Feign SpringCloud xa ”的文章

上一篇:Seata之AT 模式的使用 下一篇:Windows上安装Seata服务

猜你喜欢

发表评论: