【Seata1.5.2 下载 & 配置 & 整合 & 踩坑 & 测试】—— 含各种踩坑记录(详细版)(上):https://developer.aliyun.com/article/1390161
四、整合SpringBoot
这里以 seata-order-service2001 服务为例,另外两个同理。
1. POM
💧依赖一定要选对,高版本得用这个 ↓ 不然会报错:not support register type: null
<!--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
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.DruidDataSourceE n h a n c e r B y S p r i n g C G L I B EnhancerBySpringCGLIBEnhancerBySpringCGLIBd38bdd7b’ #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!真 · 完结撒花!!!🌸🌸ヽ(°▽°)ノ🌸 ~~~