Seata1.4集成Springboot + Nacos(三):client端环境集成

本文版本使用:seata 1.4.0、nacos 1.3.2、springboot 2.1.1、mysql 5.7,其中springboot、nacos和mysql是安装和使用网上一搜便是,不再赘述。

目录

一、创建数据库表

二、配置maven依赖

三、在nacos中新建client配置

四、业务代码支持


一、创建数据库表

在各个业务数据库里增加UNDO_LOG表,如有demo-web库和demo-goods库,则俩库里都要创建这个undo_log表。

-- for AT mode you must to init this sql for you business database. the seata server not need it.
CREATE TABLE IF NOT EXISTS `undo_log`
(
    `branch_id`     BIGINT(20)   NOT NULL COMMENT 'branch transaction id',
    `xid`           VARCHAR(100) 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';

二、配置maven依赖

<dependency>
  <groupId>io.seata</groupId>
  <artifactId>seata-spring-boot-starter</artifactId>
  <version>1.4.0</version>
</dependency>
<dependency>
  <groupId>com.alibaba.nacos</groupId>
  <artifactId>nacos-client</artifactId>
  <version>1.3.2</version>
</dependency>

三、在nacos中新建client配置

在nacos命名空间“demo-web”和“demo-goods”都新建dataId=seata-client的配置:

client端参数配置说明:Seata 参数配置

dataId=seata-client

group=MIDDLEWARE_GROUP

配置文件demo-web:

seata:
  enabled: true
  application-id: demo-web
  tx-service-group: demo-web-seata-service-group # 要与服务端nacos-config.txt中service.vgroup_mapping的后缀对应
  service:
    vgroup-mapping:
      demo-web-seata-service-group: default
  registry:
    type: nacos
    nacos:
      application: seata-server
      server-addr: "127.0.0.1:8848"
      group : "SEATA_GROUP"
      namespace: "c38bf03a-2ee2-4ee6-834a-2db99dbec528"
  config:
    type: nacos
    nacos:
      server-addr: "127.0.0.1:8848"
      group : "SEATA_GROUP"
      namespace: "c38bf03a-2ee2-4ee6-834a-2db99dbec528"

配置文件demo-goods:

seata:
  enabled: true
  application-id: demo-goods-seata
  tx-service-group: demo-goods-seata-service-group # 要与服务端nacos-config.txt中service.vgroup_mapping的后缀对应
  service:
    vgroup-mapping:
      demo-goods-seata-service-group: default
  registry:
    type: nacos
    nacos:
      application: seata-server
      server-addr: "127.0.0.1:8848"
      group : "SEATA_GROUP"
      namespace: "c38bf03a-2ee2-4ee6-834a-2db99dbec528"
  config:
    type: nacos
    nacos:
      server-addr: "127.0.0.1:8848"
      group : "SEATA_GROUP"
      namespace: "c38bf03a-2ee2-4ee6-834a-2db99dbec528"

四、业务代码支持

在需要分布式事务的最外层业务员代码加上注解(原本地事务注解@Transactional就不要了,换成如下注解):

@GlobalTransactional(rollbackFor = Exception.class)

至此,服务端与客户端的开发对接工作就完成啦,接下来就是启动测试看看效果!

踩坑

1.应用启动后一直有错误log:

can not get cluster name in registry config 'service.vgroupMapping.demo-web-seata-service-group', please make sure registry config correct

解决:就是因为client端nacos的相关配置错误了,仔细检查ip、端口、命名空间之类的

官方部署指南:Seata部署指南

官方部署脚本:seata/script at 1.4.0 · seata/seata · GitHub

参考博客:SpringCloud集成Seata并使用Nacos做注册中心与配置中心搭建初体验_calonmo的博客-CSDN博客

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值