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导入
4.激活seata
main函数上增加 @EnableAutoDataSourceProxy
5.事务使用
@GlobalTransactional