【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!真 · 完结撒花!!!🌸🌸ヽ(°▽°)ノ🌸 ~~~


🐳结语

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

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

💧参考文献:

相关推荐
YuanlongWang11 小时前
C# 基础——值类型与引用类型的本质区别
java·jvm·c#
Kay_Liang11 小时前
大语言模型如何精准调用函数—— Function Calling 系统笔记
java·大数据·spring boot·笔记·ai·langchain·tools
自由的疯11 小时前
Java 如何学习Docker
java·后端·架构
自由的疯11 小时前
Java Docker本地部署
java·后端·架构
007php00711 小时前
猿辅导Java面试真实经历与深度总结(二)
java·开发语言·python·计算机网络·面试·职场和发展·golang
摇滚侠11 小时前
Spring Boot 3零基础教程,WEB 开发 内容协商机制 笔记34
java·spring boot·笔记·缓存
一勺菠萝丶11 小时前
在 macOS 上用 Docker 为 Java 后端 & 常见开发需求搭建完整服务(详尽教程)
java·macos·docker
顾漂亮12 小时前
JVM底层攻坚
java·jvm·spring
编程岁月12 小时前
java面试-0215-HashMap有序吗?Comparable和Comparator区别?集合如何排序?
java·数据结构·面试
木井巳12 小时前
[Java数据结构与算法]详解排序算法
java·数据结构·算法·排序算法