springboot seata 1.4.2 client使用
阿新 • • 發佈:2022-05-13
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