spring-cloud-starter-alibaba-seata使用說明


Spring Cloud Alibaba Seata 使用說明

spring-cloud-starter-alibaba-seata 是 Spring Cloud Alibaba 生態中用于集成分布式事務框架 Seata 的核心組件,支持 AT(自動補償)TCC(手動補償) 等模式。


一、依賴配置
  1. 添加依賴
    pom.xml 中引入 Seata 客戶端依賴,需注意版本兼容性(如 Spring Boot 3.4 需搭配 Seata 2.0+):

    <dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-seata</artifactId><version>2023.0.1</version><exclusions><exclusion><groupId>io.seata</groupId><artifactId>seata-spring-boot-starter</artifactId></exclusion></exclusions>
    </dependency>
    <!-- 手動指定 Seata 版本 -->
    <dependency><groupId>io.seata</groupId><artifactId>seata-spring-boot-starter</artifactId><version>2.0.0</version>
    </dependency>
    
  2. 排除默認數據源代理
    避免與 Spring Boot 自動配置沖突,需在啟動類或配置類中禁用默認代理:

    seata:enable-auto-data-source-proxy: false  # 關閉自動代理
    

二、配置文件設置

application.yml 中配置 Seata 核心參數:

spring:cloud:alibaba:seata:tx-service-group: my_tx_group_v3  # 事務組名,需全局唯一service:vgroup-mapping:my_tx_group_v3: default       # 映射到 Seata Server 分組grouplist:default: 127.0.0.1:8091        # Seata Server 地址
# 注冊中心配置(以 Nacos 為例)
seata:registry:type: nacosnacos:server-addr: 127.0.0.1:8848          # Nacos 地址namespace: dev                       # 環境隔離group: SEATA_GROUP

三、數據源代理配置

通過 DataSourceProxy 包裝原生數據源,確保 Seata 攔截 SQL 操作:

@Configuration
public class SeataConfig {@Bean@ConfigurationProperties(prefix = "spring.datasource")public DataSource druidDataSource() {return new DruidDataSource();}@Primary@Bean("dataSource")public DataSourceProxy dataSourceProxy(DataSource dataSource) {return new DataSourceProxy(dataSource);  // 關鍵代理}
}

四、全局事務啟用

在需要分布式事務的業務方法上添加 @GlobalTransactional 注解:

@Service
public class OrderService {@GlobalTransactional(name = "createOrderTx", timeoutMills = 60000,rollbackFor = Exception.class)public void createOrder(OrderDTO order) {// 調用其他微服務(如扣減庫存、賬戶扣款)inventoryClient.deduct(order.getProductId());accountClient.deduct(order.getUserId(), order.getAmount());// 本地事務操作(如插入訂單記錄)orderMapper.insert(order);if (order.getAmount() > 100000) {throw new BusinessException("金額超限,觸發全局回滾"); }}
}

五、注意事項與常見問題
  1. 事務分組一致性
    ? 所有參與事務的微服務需配置相同的 tx-service-group,并與 Seata Server 的配置匹配。
    ? 示例:服務 A 和 B 的 tx-service-group 均需為 my_tx_group_v3

  2. 數據源代理沖突
    ? 若使用多數據源,需為每個數據源手動創建代理,并指定 @Primary 注解。

  3. 版本兼容性
    ? Seata 2.0+ 僅支持 JDK 17+,需與 Spring Boot 3.x 及以上版本搭配。

  4. XID 傳播
    ? 確保 seata-spring-boot-starter 正確傳遞 XID(事務 ID),避免因 Filter 順序問題導致鏈路中斷。


總結

通過 spring-cloud-starter-alibaba-seata,開發者可通過 注解驅動 快速實現分布式事務管理,結合 Nacos 注冊中心與配置中心,構建高可用的微服務架構。核心步驟包括:依賴引入 → 配置調整 → 數據源代理 → 事務注解。實際應用中需特別注意版本兼容性、事務分組一致性及數據源代理配置,避免常見陷阱。

拓展

Seata使用詳解

spring-cloud-alibaba使用說明


在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/900762.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/900762.shtml
英文地址,請注明出處:http://en.pswp.cn/news/900762.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

每日一題(小白)暴力娛樂篇23

由題意得知給我們一串數字&#xff0c;我們每次交換兩位&#xff0c;最少交換多少次成功得到有順序的數組。我們以平常的思維去思考&#xff0c;加入給你一串數字獲得最少的交換次數&#xff0c;意味著你的交換后續基本不會變&#xff0c;比如說2 1 3 5 4 中1與2交換后不變&…

Python基礎——Pandas庫

對象的創建 導入 Pandas 時&#xff0c;通常給其一個別名“pd”&#xff0c;即 import pandas as pd。作為標簽庫&#xff0c;Pandas 對象在 NumPy 數組基礎上給予其行列標簽。可以說&#xff0c;列表之于字典&#xff0c;就如 NumPy 之于 Pandas。Pandas 中&#xff0c;所有數…

Spring入門概念 以及入門案例

Spring入門案例 Springspring是什么spring的狹義與廣義spring的兩個核心模塊IoCAOP Spring framework特點spring入門案例不用new方法&#xff0c;如何使用返回創建的對象 容器&#xff1a;IoC控制反轉依賴注入 Spring spring是什么 spring是一款主流的Java EE輕量級開源框架 …

The packaging for this project did not assign a file to the build artifact

問題&#xff1a; maven install報錯&#xff1a;The packaging for this project did not assign a file to the build artifact 解決方案&#xff1a; 方案1&#xff1a; 使用mvn clean install 就可以解決問題&#xff0c; 方案2&#xff1a; 找到lifecycle點clean再點…

C++入門一:C++ 編程概述

一、C 語言與 C 的關系&#xff1a;從 “帶類的 C” 到獨立王國 1.1 血緣關系&#xff1a;C 是 C 的 “超級進化版” 起源&#xff1a;C 由 Bjarne Stroustrup 在 1980 年代開發&#xff0c;最初名為 “C with Classes”&#xff08;帶類的 C&#xff09;&#xff0c;旨在為 …

LLM生成文本的 束搜索參數是什么(Beam Search)

LLM生成文本的 束搜索參數是什么(Beam Search) 束搜索(Beam Search)是一種在序列生成任務(如機器翻譯、文本生成等)中常用的啟發式搜索算法,用于在搜索空間中尋找最優的生成序列。 束搜索的基本概念 在序列生成過程中,每一步都會有多個可能的選擇(即候選標記)。 …

Java-多級排序結合thenComparing()

List<User>,user有個字段有值的時候設置1,沒值就是null,怎么排序根據這個字段排序? 若要對 List<User> 按照某個字段(如 flag,有值時為 1,無值時為 null)排序,可 以使用 ??Comparator?? 結合 null 值處理邏輯。 1. 排序規則說明?? 假設需求是:…

卷積神經網絡(CNN)基礎

目錄 一、應用場景 二、卷積神經網絡的結構 1. 輸入層&#xff08;Input Layer&#xff09; 2. 卷積層&#xff08;Convolutional Layer&#xff09; 3. 池化層&#xff08;Pooling Layer&#xff09; 最大池化&#xff08;max_pooling&#xff09;或平均池化&#xff08;…

Android 中集成 Unity 工程的步驟

在 Adroid 項目中集成 Unity 工程,主要步驟如下: 一、前提條件 1、已有一個 Android 工程項目; 2、Unity 工程已導出為 Android 工程,目錄大概如下: 二、集成步驟 1、在 Android 工程中導入 Unity 工程的 unityLibrary 模塊。 在 Android Studio 中,點擊菜單欄 Fil…

熱Key問題及其解決方案:Redis高并發場景下的性能優化

目錄 一、熱Key問題的本質與影響 1.1 什么是熱Key&#xff1f; 典型熱Key場景&#xff1a; 1.2 熱Key造成的技術挑戰與業務影響 技術層面影響&#xff1a; 業務層面影響&#xff1a; 二、熱Key的科學判定與識別方法 2.1 定量判定標準 QPS集中度指標 資源消耗指標 2.…

2025年智能 ITSM產品推薦

2025年數字經濟占GDP比重將突破62%&#xff0c;IT服務管理&#xff08;ITSM&#xff09;系統已成為企業核心競爭力的"數字底座"。根據IDC最新報告&#xff0c;采用AI驅動的智能ITSM系統可使企業運營效率提升41%&#xff0c;故障恢復成本降低58%。本文從智能化水平、產…

動手人形機器人(RL)

1 PPO的講解 核心步驟&#xff0c;如策略網絡和價值網絡的定義、優勢估計、策略更新、價值更新等基礎功能的實現 2 代碼構成 可能涉及 初始化&#xff0c;Behavior Clone 3 動手強化學習 import pytorch as torch class actorcritic ##等待補充 4 PD Gains 在機器人學中&…

Mujoco xml模型

Mujoco xml模型 一個例子compileroptionassetmesh default基本使用childclass與class多個class worldbodybody關系inertialjointgeom XML主要分為以下三個部分&#xff1a; < asset> &#xff1a; 用 tag導入STL文件&#xff1b;< worldbody>&#xff1a;用tag定義…

【Redis】背景知識

一、Redis的特性 Redis是一種基于鍵值對&#xff08;key-value&#xff09;的NoSQL數據庫&#xff0c;與很多鍵值對數據庫不同的是&#xff0c;Redis中的值可以是由string&#xff08;字符串&#xff09;&#xff0c;hash&#xff08;哈希&#xff09;&#xff0c;list&#xf…

Redis的used_memory_peak_perc和used_memory_dataset_perc超過90%會怎么樣

當Redis的used_memory_peak_perc&#xff08;當前內存占歷史峰值的百分比&#xff09;和used_memory_dataset_perc&#xff08;數據集內存占比&#xff09;均超過90%時&#xff0c;可能引發以下問題及風險&#xff1a; 一、used_memory_peak_perc > 90% 的影響 內存交換風險…

嵌入式---灰度傳感器

灰度傳感器概覽 一、定義與核心功能 1. 定義 灰度傳感器是一種基于 光反射原理 的光電傳感器&#xff0c;通過檢測物體表面對入射光&#xff08;多為紅外光或可見光&#xff09;的反射強度&#xff0c;將光信號轉換為電信號&#xff0c;從而判斷目標物體的 灰度值&#xff0…

0303hooks-react-仿低代碼平臺項目

文章目錄 1. 副作用2.其他內置hooks2.1 useEffect2.2 useRef2.3useMemo2.4 useCallback 3.自定義hooks4. 第三方hooks5. hooks使用原則6. hooks閉包陷阱7. 總結結語 1. 副作用 當組件渲染完成時&#xff0c;加載一個Ajax網絡請求當某個state更新時&#xff0c;加載一個Ajax網絡…

Zephyr、FreeRTOS、RT-Thread 定時器區別分析

一、核心特性對比 特性ZephyrFreeRTOSRT-Thread定時器類型系統定時器&#xff08;k_timer&#xff09;、硬件定時器軟件定時器&#xff08;基于系統tick&#xff09;軟件定時器、硬件定時器定時模式單次、周期性單次、自動重載&#xff08;周期性&#xff09;單次、周期、自定…

手撕unique_ptr 和 shareed_ptr

文章目錄 unique_ptrshared_ptr unique_ptr template<class T> class Unique_ptr { private:T* ptrNULL; public://1、刪除默認的拷貝構造函數Unique_ptr(Unique_ptr& u) delete;//2、刪除默認的復制構造Unique_ptr& operator(Unique_ptr& u) delete; …

對比 HashMap 和 ConcurrentHashMap 擴容邏輯的差異

HashMap 和 ConcurrentHashMap 在 擴容邏輯 上有明顯的差異&#xff0c;尤其是在并發環境下的處理策略&#xff0c;這是它們核心區別之一。 &#x1f9f1; 一、總體對比表&#xff08;JDK 8 為例&#xff09; 特性HashMapConcurrentHashMap線程安全? 否? 是是否支持并發擴容…