1. 程式人生 > 其它 >springboot seata 1.4.2 client使用

springboot 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://61.174.171.60:31557/seata_storage?useUnicode=true&characterEncoding=utf-8&useSSL=false username: root password: Szzz.emergen@2021 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