springcloud seata 1.4.2 client使用
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