【Seata1.5.2 下载 & 配置 & 整合 & 踩坑 & 测试】—— 含各种踩坑记录(详细版)

💧 S e a t a 1.5.2 ------含各种踩坑记录 \color{#FF1493}{Seata1.5.2 ------ 含各种踩坑记录} Seata1.5.2------含各种踩坑记录💧


🌷 仰望天空,妳我亦是行人.✨

🦄 个人主页------微风撞见云的博客🎐
🐳 《数据结构与算法》专栏的文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺
💧 《Java学习笔记》专栏的文章是本人在Java学习中总结的一些知识点~ 💐
🥣 《每天一点小知识》专栏的文章可以丰富你的知识库,滴水成河~ 🌊
🎐《Redis》专栏的文章是在学习Redis时,整理的笔记与记录的思考~ 🥏
🥕《RabbitMQ》专栏的文章是在学习尚硅谷课程时整理的笔记,方便复习巩固~ 🍑
🪁 希望本文能够给读者带来一定的帮助~🌸文章粗浅,敬请批评指正!🐥


文章目录

    • [🌸【Seata1.5.2 下载 & 配置 & 整合 & 踩坑 & 测试】------ 含各种踩坑记录(详细版)](#🌸【Seata1.5.2 下载 & 配置 & 整合 & 踩坑 & 测试】—— 含各种踩坑记录(详细版))
    • 一、各组件版本
    • 二、Seata官网与下载
    • 三、配置Seata
      • [1. Seata配置](#1. Seata配置)
      • [2. Nacos配置](#2. Nacos配置)
      • [3. SQL文件](#3. SQL文件)
      • [4. 启动seata](#4. 启动seata)
    • 四、整合SpringBoot
      • [1. POM](#1. POM)
      • [2. YML](#2. YML)
      • [3. 踩坑说明【重要】](#3. 踩坑说明【重要】)
      • [4. 🌸测试Seata(完结撒花)🌸](#4. 🌸测试Seata(完结撒花)🌸)
  • 🐳结语

🌸【Seata1.5.2 下载 & 配置 & 整合 & 踩坑 & 测试】------ 含各种踩坑记录(详细版)

这是一期 踩坑日记 ,两个月前跟着尚硅谷周阳老师学微服务最后的seata部分,由于版本不同,配置不好,不想用0.9的老版本,1.5.2版本的和老版本配置问题差别太大,当时弄了很久也没有弄好,放弃了。昨天重拾问题,今早解决,完结撒花,特此记录本次seata 1.5.2 版本的各种踩坑日记。

一、各组件版本

  • Seata:1.5.2
  • MySQL:8.0.26
  • Nacos:2.1.1

二、Seata官网与下载

这里啰嗦一句:在看视频的时候,发现弹幕的小伙伴基本上分为几个阵营:"0.9.x"、"1.4.x"、"1.5.2" ,这三个版本的配置都有很大差异,尤其是1.5.2版本,配置文件直接改为了yml,并且不再需要手动配置 DataSourceProxy 我就是想尝试新一点的,所以没少踩坑 。大家谨慎选择版本。

💧官网地址:http://seata.io/zh-cn/

💧下载地址:https://github.com/seata/seata/releases

三、配置Seata

1. Seata配置

💧解压文件后,你将看到这样的目录:

💧修改seata\conf 下的 application.yml(建议先拷贝一份副本备用)

yml 复制代码
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配置

💧点击左侧的:配置管理/配置列表,新增一个配置:

  • DataID: seataServer.properties

  • GROUP: SEATA_GROUP

  • 配置内容

    • 格式为:properties

    • 内容为:

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
# 数据库用户名密码
store.db.user=root
store.db.password=root
# 微服务里配置与这里一致
service.vgroupMapping.fsp_tx_group=default
service.vgroupMapping.fsp_tx_group=default
service.vgroupMapping.fsp_tx_group=default

3. SQL文件

💧找到 seata\script\server\db\mysql.sql 文件,在数据库新建一个seata数据库,执行这个文件

4. 启动seata

💧双击 seata\bin 下的 seata-server.bat,如果闪退 cmd 可以看报错内容

💧查看 Nacos

四、整合SpringBoot

这里以 seata-order-service2001 服务为例,另外两个同理。

1. POM

💧依赖一定要选对,高版本得用这个 ↓ 不然会报错:not support register type: null

java 复制代码
<!--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

💧按照这个写基本上就OK

java 复制代码
server:
  port: 2001

spring:
  application:
    name: seata-order-service
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848

  datasource:
    username: root
    password: root
    url: jdbc:mysql://localhost:3306/seata_order?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=GMT%2B8
    driver-class-name: com.mysql.cj.jdbc.Driver


feign:
  hystrix:
    enabled: false

logging:
  level:
    io:
      seata: info

mybatis:
  mapperLocations: classpath:mapper/*.xml


seata:
  tx-service-group: fsp_tx_group  #这里每个服务都是对应不同的映射名,在配置中心可以看到
  registry:
    type: nacos
    nacos:
      server-addr: localhost:8848
      group: SEATA_GROUP
  service:
    vgroup-mapping:
      #这里也要注意 key为映射名,
      fsp_tx_group: default

3. 踩坑说明【重要】

坑一

💧这里有个大坑,老师是旧版本的,我们是新版本的,DruidDataSource 配置了反而出错,参考github解决了

报错:

Bean named 'dataSourceProxy' is expected to be of type 'io.seata.rm.datasource.DataSourceProxy' but was actually of type 'com.alibaba.druid.pool.DruidDataSource E n h a n c e r B y S p r i n g C G L I B EnhancerBySpringCGLIB EnhancerBySpringCGLIBd38bdd7b' #3805


💧来自大佬的解释(真心感谢 ):自1.3以来不鼓励自己注册DataSourceProxy bean。如果您正在使用DataSourceProxy,则不需要关心DataSourceProxy(starter将自动处理它),只需以旧的方式注册并使用datasourcebean。

💧也就是说,在后续的高版本中,我们不要再去手动配置数据源了,就使用自动创建的数据源即可。

坑二

💧由于我的nacos是2.1.1,并且seata是1.5.2,工程父pom中的依赖不再适用。

💧详情请参考:https://github.com/alibaba/spring-cloud-alibaba/wiki/版本说明

💧根据文档,找到适配的依赖版本:

4. 🌸测试Seata(完结撒花)🌸

🌸启动, seata、nacos、三个微服务之后

🌸访问:http://localhost:2001/order/create?userId=1&productId=1&count=10&money=100

🌸查看数据库中对应的数据(原始sql语句在老师的笔记中有,实在没有的话,你也可以参考这篇很棒的文章:Spring Cloud 学习笔记(3 / 3)

🌸先正常访问,看看数据库情况:http://localhost:2001/order/create?userId=1&productId=1&count=10&money=100

🌸添加超时,OpenFeign 默认超时是1s,我们超时20秒,这样可以模拟一个服务异常的场景,观察数据库有无写操作

🌸由于服务异常,操作回滚,数据全部OK!真 · 完结撒花!!!🌸🌸ヽ(°▽°)ノ🌸 ~~~


🐳结语

🐬初学一门技术时,总有些许的疑惑,别怕,它们是我们学习路上的点点繁星,帮助我们不断成长。

🐟积少成多,滴水成河。文章粗浅,希望对大家有帮助!

💧参考文献:

相关推荐
郑州吴彦祖7722 分钟前
【java】数据类型与变量以及操作符
java·intellij-idea
程序员大金3 分钟前
基于SpringBoot+Vue+MySQL的在线学习交流平台
java·vue.js·spring boot·后端·学习·mysql·intellij-idea
吹老师个人app编程教学9 分钟前
阿里巴巴_java开发规范手册详解
java·开发语言
天上掉下来个程小白9 分钟前
Stream流的终结方法(一)
java·windows
qq_25183645711 分钟前
基于SpringBoot vue 医院病房信息管理系统设计与实现
vue.js·spring boot·后端
天上掉下来个程小白31 分钟前
请求响应-08.响应-案例
java·服务器·前端·springboot
大白_dev31 分钟前
数据校验的总结
java·开发语言
武昌库里写JAVA32 分钟前
Vue3常用API总结
数据结构·spring boot·算法·bootstrap·课程设计
失落的香蕉38 分钟前
Java第二阶段---10方法带参---第三节 面向对象和面向过程的区别
java·开发语言
qq_2518364571 小时前
基于springboot vue3 在线考试系统设计与实现 源码数据库 文档
数据库·spring boot·后端