springcloud整合seata

好久没整活了,确实没时间,也没学习啊。简单记录一下springcloud中如何使用seata实现分布式事务。
seata下载地址:https://github.com/seata/seata/releases/tag/v1.4.2
在这里插入图片描述
开始进行准备配置工作。
nacos命名空间名为seata 命名空间ID为seata_namespace_001的,然后保存即可
在这里插入图片描述
seata解压后,去到seata/seata-server-1.4.2/conf目录,修改registry.conf文件,其他的没用我给删除了,这里填写nacos配置信息,命名空间填写“seata_namespace_001”
在这里插入图片描述
然后修改file.conf文件,这里主要填写seata链接的数据库信息
在这里插入图片描述
然后找到刚才下载的seata源码里面的config.txt,将该文件复制到seata的根目录下面
在这里插入图片描述
在这里插入图片描述
主要修改点如下
在这里插入图片描述

在下载的Seata源码的seata-1.4.2/script/config-center/nacos目录下找到nacos-config.sh文件
在这里插入图片描述
复制到seata根目录下
在这里插入图片描述
鼠标右键,执行git bash命令

sh nacos-config.sh -h 127.0.0.1 -p 8848 -g SEATA_GROUP -t seata_namespace_001 -u nacos -w nacos

执行成功后如下,nacos里面可以显示这些信息在这里插入图片描述
数据库里面创建数据库,数据库脚本seata-1.4.2/script/server/db目录
在这里插入图片描述
启动seata服务:seata-server.bat -p 8091 -h 127.0.0.1 -m db
项目整合seata,要整合的服务数据库里面创建该表信息

CREATE TABLE IF NOT EXISTS `undo_log`
(
    `branch_id`     BIGINT       NOT NULL COMMENT 'branch transaction id',
    `xid`           VARCHAR(128) NOT NULL COMMENT 'global transaction id',
    `context`       VARCHAR(128) NOT NULL COMMENT 'undo_log context,such as serialization',
    `rollback_info` LONGBLOB     NOT NULL COMMENT 'rollback info',
    `log_status`    INT(11)      NOT NULL COMMENT '0:normal status,1:defense status',
    `log_created`   DATETIME(6)  NOT NULL COMMENT 'create datetime',
    `log_modified`  DATETIME(6)  NOT NULL COMMENT 'modify datetime',
    UNIQUE KEY `ux_undo_log` (`xid`, `branch_id`)
) ENGINE = InnoDB
  AUTO_INCREMENT = 1
  DEFAULT CHARSET = utf8 COMMENT ='AT transaction mode undo table';

服务里面都添加该依赖

<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-seata</artifactId>
</dependency>

我这里有个user服务,point服务
user服务配置文件新增

spring:
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
    alibaba:
      seata:
        tx-service-group: server-user-tx_group
seata:
  application-id: user
  service:
    vgroup-mapping:
      server-product-tx_group: default

  registry:
    nacos:
      server-addr: 127.0.0.1:8848
      username: nacos
      password: nacos
      group: SEATA_GROUP
      namespace: seata_namespace_001
      application: seata-server

  config:
    type: nacos
    nacos:
      server-addr: 127.0.0.1:8848
      username: nacos
      password: nacos
      group: SEATA_GROUP
      namespace: seata_namespace_001  

point服务配置文件

spring:
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
    alibaba:
      seata:
        tx-service-group: server-point-tx_group
seata:
  application-id: point
  service:
    vgroup-mapping:
      server-order-tx_group: default

  registry:
    nacos:
      server-addr: 127.0.0.1:8848
      username: nacos
      password: nacos
      group: SEATA_GROUP
      namespace: seata_namespace_001
      application: seata-server

  config:
    type: nacos
    nacos:
      server-addr: 127.0.0.1:8848
      username: nacos
      password: nacos
      group: SEATA_GROUP
      namespace: seata_namespace_001

方法添加注解@GlobalTransactional
在这里插入图片描述
控制台打印日志,有提示回滚信息Rollbacked。查看数据库,没有存入任何数据在这里插入图片描述在这里插入图片描述

完事了

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值