微服务springCloud集成seata实现分布式事务

注:有句话是这样说的”纸上得来终觉浅,绝知此事要躬行“。

1、下载seata-server1.6.1,官网地址:Seata | Seata

2、修改安装包conf中的配置文件application.yml,我这里全部采用nacos的方式

    1)、修改config,将type属性值修改为nacos,并添加连接地址

    2)、修改registry,将type属性值修改为nacos,并添加连接地址

    3)、修改config,将type属性值修改为nacos,并添加连接地址


server:
  port: 7091

spring:
  application:
    name: seata-server

logging:
  config: classpath:logback-spring.xml
  file:
    path: ${user.home}/logs/seata
  extend:
    logstash-appender:
      destination: 127.0.0.1:4560
    kafka-appender:
      bootstrap-servers: 127.0.0.1:9092
      topic: logback_to_logstash

console:
  user:
    username: seata
    password: seata

seata:
  config:
    # support: nacos, consul, apollo, zk, etcd3
    type: nacos
    nacos:
      server-addr: 127.0.0.1:8848
      namespace: 0808664a-213c-4b19-978c-c4d8257ac94b
      group: DEFAULT_GROUP
      username: nacos
      password: nacos
      context-path:
      ##if use MSE Nacos with auth, mutex with username/password attribute
      #access-key:
      #secret-key:
      data-id: seataServer.properties
  registry:
    # support: nacos, eureka, redis, zk, consul, etcd3, sofa
    type: nacos
    nacos:
      application: seata-server
      server-addr: 127.0.0.1:8848
      group: DEFAULT_GROUP
      namespace: 0808664a-213c-4b19-978c-c4d8257ac94b
      cluster: default
      username: nacos
      password: nacos
      context-path:
      ##if use MSE Nacos with auth, mutex with username/password attribute
      #access-key:
      #secret-key:
  store:
    # support: file 、 db 、 redis
    mode: file
#  server:
#    service-port: 8091 #If not configured, the default is '${server.port} + 1000'
  security:
    secretKey: SeataSecretKey0c382ef121d778043159209298fd40bf3850a017
    tokenValidityInMilliseconds: 1800000
    ignore:
      urls: /,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-fe/public/**,/api/v1/auth/login

3、在安装包seata/script/config-center中找到config.txt并复制到nacos配置文件中去,在相应的空间下建立配置文件如下图:

   1)、需要修改的配置参数,store.mode=db,和数据库连接信息

    2)、将service.vgroupMapping.default_tx_group=default修改成service.vgroupMapping.my_test_tx_group=default,保持与springcloud项目中的组名一致

4、将seata161\script\server\db下面的sql文件导入数据库

    1)、另外在AT模式中,需要在参与全局事务的数据库中,添加一个undo_log表,SQL如下:

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for undo_log
-- ----------------------------
DROP TABLE IF EXISTS `undo_log`;
CREATE TABLE `undo_log`  (
  `branch_id` bigint(20) NOT NULL COMMENT '分支事务ID',
  `xid` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '全局事务ID',
  `context` varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '上下文',
  `rollback_info` longblob NOT NULL COMMENT '回滚信息',
  `log_status` int(11) NOT NULL COMMENT '状态,0正常,1全局已完成',
  `log_created` datetime(6) NOT NULL COMMENT '创建时间',
  `log_modified` datetime(6) NOT NULL COMMENT '修改时间',
  UNIQUE INDEX `ux_undo_log`(`xid`, `branch_id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = 'AT transaction mode undo table' ROW_FORMAT = Compact;

SET FOREIGN_KEY_CHECKS = 1;

5、springCloud项目配置文件如下:

project:
  namespace: 0808664a-213c-4b19-978c-c4d8257ac94b
  nacosaddr: 192.168.0.152:8848
  username: nacos
  password: nacos
spring:
  application:
    name: ac-order
  profiles:
    active: test
  cloud:
    alibaba:
      seata:
        tx-service-group: my_test_tx_group
    nacos:
      config:
        server-addr: ${project.nacosaddr}
        username: ${project.username}
        password: ${project.password}
        namespace: ${project.namespace}
        group: DEFAULT_GROUP
        file-extension: yaml
        prefix: ac-thirds-${spring.profiles.active}
      discovery:
        server-addr: ${project.nacosaddr}
        username: ${project.username}
        password: ${project.password}
        namespace: ${project.namespace}

server:
  port: 8105
  servlet:
    context-path: /order

6、启动seata-server.bat并测试项目的事务情况。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值