seata1.5.1+配置使用 以及 整合spring cloud

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

搭建环境搭建失败的可以看这篇文章,理论篇自己csdn


一、搭建注意点

我自己整合spring的时候最大的问题是引入pom,和启动配置
seata配置的事务组 无法和spring对应.

二、下载seata

1.连接 seata下载地址

2 配置seata

1 本地配置

进入${seata}/conf 修改 application.yml ,具体可以参考同级目录下的application.example.yml(切记不要直接覆盖application.yml, application.yml会比参考文件多出一些参数 我就是因为这样搞了半天)
我的配置如下:

#放在 ${seata}/conf目录下
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: http://127.0.0.1:8848
      # namespace: 7392baed-d98b-48a4-8676-34e1b38eade6
      namespace:
      group: SEATA_GROUP
      username:
      password:
      ##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
    preferred-networks: 30.240.*
    nacos:
      application: seata-server
      server-addr: http://127.0.0.1:8848
      group: SEATA_GROUP
      namespace:
      # namespace: 7392baed-d98b-48a4-8676-34e1b38eade6
      cluster: default
      username:
      password:
      ##if use MSE Nacos with auth, mutex with username/password attribute
      #access-key: ""
      #secret-key: ""
  security:
    secretKey: SeataSecretKey0c382ef121d778043159209298fd40bf3850a017
    tokenValidityInMilliseconds: 1800000
    ignore:
      urls: /,/**/*.css,/**/*.js,/**/*.html,/**/*.map,/**/*.svg,/**/*.png,/**/*.ico,/console-fe/public/**,/api/v1/auth/login

2 nacos配置中心配置

namespace: SEATA_GROUP
group: public
Data ID: seataServer.properties

# 存储模式
store.mode=db
 
store.db.datasource=druid
store.db.dbType=mysql
# 需要根据mysql的版本调整driverClassName
# mysql8及以上版本对应的driver:com.mysql.cj.jdbc.Driver
# mysql8以下版本的driver:com.mysql.jdbc.Driver
store.db.driverClassName=com.mysql.cj.jdbc.Driver
# 注意根据生产实际情况调整参数host和port
store.db.url=jdbc:mysql://127.0.0.1:3306/seata?rewriteBatchedStatements=true&useUnicode=true&characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false
# 数据库用户名
store.db.user=root
# 用户名密码
store.db.password=123456
# 微服务里配置与这里一致
service.vgroupMapping.order_tx_group=default
service.vgroupMapping.storage_tx_group=default
service.vgroupMapping.account_tx_group=default

3 创建sql文件

seata的数据库文件

${seata}\script\server\db\mysql.sql

4 启动seata

先启动nacos 再启动seata
都启动之后查看nacos配置中心的文件是否被引用,未被引用就是上面配置出错了
查看nacos配置中心的文件是否被引用,未被引用就是上面配置出错了
查看服务列表是否有此服务查看服务列表是否有此服务
上面两个文件都有信息表示配置启动成功 访问页面即可
7091为seata端口
http://localhost:7091 进入页面查看 用户名密码均为 seata

三、 整合springboot

1 基本信息

官方提供了两种jar包
spring-cloud-starter-alibaba-seataseata-spring-boot-start.
spring-cloud-starter-alibaba-seata中包含了seata-spring-boot-start
所以本次采用spring-cloud-starter-alibaba-seata
如果只使用seata-spring-boot-start会有些小问题,比如 seata的xid需要手动传入等…

可能单纯是我菜的原因吧请添加图片描述

2 配置

本次测试将使用三个服务
分别为 A B C 。 A调用B和C
A=>B
A=>C

1 导包

防止cloud版本和seata版本不一致,排除spring自带的seata版本,引入和seata对应的版本

<!--  网上好多都是排除seata-all这个包,但是我运行起来总是报错,不知道什么原因
<groupId>io.seata</groupId>
 <artifactId>seata-all</artifactId>
-->
    <!--seata-->
      <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-seata</artifactId>
        <exclusions>
            <exclusion>
                    <groupId>io.seata</groupId>
                    <artifactId>seata-spring-boot-starter</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <dependency>
        <groupId>io.seata</groupId>
        <artifactId>seata-spring-boot-starter</artifactId>
        <version>1.5.2</version>
    </dependency>

2. yml配置

server:
  port: 2001
seata:
  tx-service-group: order_tx_group  #这里每个服务都是对应不同的映射名,在配置中心可以看到
  registry:
    type: nacos
    nacos:
      server-addr: http://127.0.0.1:8848
      group: SEATA_GROUP
  service:
    vgroup-mapping:
      #这里也要注意 key为映射名,
      order_tx_group: default
spring:
  application:
    name: seata-order-service
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
        group: SEATA_GROUP
  datasource:
    druid:
      type: com.alibaba.druid.pool.DruidDataSource
      url: jdbc:mysql://127.0.0.1:3306/seata_order?serverTimezone=UTC
      username: root
      password: 123456
      driver-class-name: com.mysql.cj.jdbc.Driver
      # 初始化配置
      initial-size: 3
      # 最小连接数
      min-idle: 3
      # 最大连接数
      max-active: 15
      # 获取连接超时时间
      max-wait: 5000
      break-after-acquire-failure: true
      connection-error-retry-attempts: 3
      # 连接有效性检测时间
      time-between-eviction-runs-millis: 90000
      # 最大空闲时间
      min-evictable-idle-time-millis: 1800000
      test-while-idle: true
      test-on-borrow: false
      test-on-return: false
      validation-query: select 1
      # 配置监控统计拦截的filters
      filters: stat
      stat-view-servlet:
        url-pattern: /druid/*
        reset-enable: false
        login-username: admin
        login-password: admin
        allow: 127.0.0.1
        enabled: true   #默认值为true,即打开监控页面,但存在泄漏信息的风险,所以修改为false
      web-stat-filter:
        url-pattern: /*
        exclusions: "*.js,*.gif,*.jpg,*.bmp,*.png,*.css,*.ico,/druid/*"

logging:
  level:
    io:
      seata: info

四、 代码地址

gitee: https://gitee.com/sun-jiafan/seata151.git
包含seata配置文件sql文件java代码

总结

就写东西 搞了两三天,m******d
技术交流wx:
请添加图片描述


版权声明:本文为sun9087原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。