1.POM

<!--seata-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-seata</artifactId>
    <exclusions>
        <!-- 要与seata服务端版本一直,所以把自带的替换掉 -->
        <exclusion>
            <groupId>io.seata</groupId>
            <artifactId>seata-spring-boot-starter</artifactId>
        </exclusion>
        <exclusion>
            <groupId>io.seata</groupId>
            <artifactId>seata-all</artifactId>
        </exclusion>
    </exclusions>
</dependency>
<dependency>
    <groupId>io.seata</groupId>
    <artifactId>seata-all</artifactId>
    <version>1.4.2</version>
</dependency>

<dependency>
    <groupId>io.seata</groupId>
    <artifactId>seata-spring-boot-starter</artifactId>
    <version>1.4.2</version>
</dependency>

2. yaml 

  注意点:tx-service-group: my-tx-group #要与配置文件中的vgroupMapping一致,并且在nacos上必须存在配置,如果是手工nacos配置,这儿很容易忘记,

#至于为什么这块的cloud.alibaba.seata配置放在seata中的话启动会报找不到my-tx-group,有知道的请回复
server:
  port: 8883

spring:
  profiles:
    active: dev
  application:
    name: cloud-storage
  cloud:
#    nacos:  # 在bootstrap.yml 已配置
#      discovery:
#        server-addr: localhost:8848
#      config:
#        server-addr: localhost:8848
#        file-extension: yaml
    alibaba:
      seata:
        #事务群组(可以每个应用独立取名,也可以使用相同的名字),要与服务端nacos-config.txt中service.vgroup_mapping中存在,并且要保证多个群组情况下后缀名要保持一致-tx_group
        enabled: true
        enable-auto-data-source-proxy: true #是否开启数据源自动代理,默认为true
        tx-service-group: my-tx-group  #要与配置文件中的vgroupMapping一致,并且在nacos上必须存在配置,如果是手工nacos配置,这儿很容易忘记,
#至于为什么这块的cloud.alibaba.seata配置放在seata中的话启动会报找不到my-tx-group,有知道的请回复

  datasource:
    type: com.alibaba.druid.pool.DruidDataSource
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://*******:31557/seata_storage?useUnicode=true&characterEncoding=utf-8&useSSL=false
    username: root
    password: *********

seata:
#  #事务群组(可以每个应用独立取名,也可以使用相同的名字),要与服务端nacos-config.txt中service.vgroup_mapping中存在,并且要保证多个群组情况下后缀名要保持一致-tx_group
#  enabled: true
#  enable-auto-data-source-proxy: true #是否开启数据源自动代理,默认为true
#  tx-service-group: my-tx-group  #要与配置文件中的vgroupMapping一致
  registry: #registry根据seata服务端的registry配置
    type: nacos #默认为file
    nacos:
      application: seata-server #配置自己的seata服务
      server-addr: 127.0.0.1:8848 #根据自己的seata服务配置
      username: nacos #根据自己的seata服务配置
      password: nacos #根据自己的seata服务配置
      cluster: default # 配置自己的seata服务cluster, 默认为 default
      group: SEATA_GROUP #根据自己的seata服务配置
      namespace: 4fe28b2b-e7d5-42ed-a047-2d85a2311c0d #改为自己的nacos的namespace,这里填写的是刚才创建seata命名空间的id
  config:
    type: nacos #默认file,如果使用file不配置下面的nacos,直接配置seata.service
    nacos:
      server-addr: 127.0.0.1:8848 #配置自己的nacos地址
      group: SEATA_GROUP #配置自己的dev
      username: nacos #配置自己的username
      password: nacos #配置自己的password
      dataId: seataServer.properties # #配置自己的dataId,由于搭建服务端时把客户端的配置也写在了seataServer.properties,所以这里用了和服务端一样的配置文件,实际客户端和服务端的配置文件分离出来更好
      namespace: 4fe28b2b-e7d5-42ed-a047-2d85a2311c0d #改为自己的nacos的namespace,这里填写的是刚才创建seata命名空间的id


    sentinel:
      transport:
        dashboard: localhost:8858
        port: 8719
      datasource:
        ds1:
          nacos:
            server-addr: localhost:8848
            data-id: cloud-consumer-service
            group-id: DEFAULT_GROUP
            data-type: json
            rule-type: flow
logging:
  level:
    cn.emergen.springcloud.config.OpenFeignConfig: debug

feign:
  sentinel:
    enabled: true # 激活Sentinel对Feign的支持

3.nacos 配置

注意点:Data ID:service.vgroupMapping.my-tx-group

“my-tx-group” 是服务端中的配置 service.vgroupMapping.my_tx_group=default

推荐使用的官方提供的自动.sh脚本进行nacos导入

springcloud获取客户端真实ip_spring

 

4.激活seata

   main函数上增加 @EnableAutoDataSourceProxy

springcloud获取客户端真实ip_spring_02

 

5.事务使用

 @GlobalTransactional

springcloud获取客户端真实ip_spring_03