當前位置:首頁 > IT技術 > 其他 > 正文

atomikos實現分布式事務
2022-04-25 23:12:38

date: 2022-04-25
categories: [java, 編程]
tags: [分布式事務]

概述

多數據源單服務寫入, 分布式事務實現

使用隨機數控制產生異常

注: 網上很多都是只有多數據源配置,實際不能控制事務統一回滾,
單服務場景下如果多個數據源只有一個寫,剩下都是讀, 則不需要分布式事務

為減少篇幅,詳細代碼在代碼倉庫,可自行參考

版本

springboot 2.1.7.RELEASE

配置引入

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

<dependency>
  <groupId>mysql</groupId>
  <artifactId>mysql-connector-java</artifactId>
</dependency>

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-jta-atomikos</artifactId>
</dependency>

增加配置類

AtomikosJtaPlatform

JPAAtomikosTransactionConfig Atomikos事務配置類

PrimaryConfig 主數據源配置

SecondaryConfig 其它數據源配置

數據對象實現

User

增加倉儲實現

需要分別實現primary和secondary, 從而支持多個數據源訪問

PrimaryUserRepository

SecondaryUserRepository

實現服務類

PrimaryUserService

SecondaryUserService

ExampleService

負責統一調用 PrimaryUserService 和 SecondaryUserService,
模擬一個服務同時訪問多個服務類(每個服務類引用了不同數據源)

如果其中某個服務拋出異常,則整個事務回滾, @Transactional(rollbackOn =
Exception.class) 是必須的

測試

com.example.springbootatomikos.services.UserServiceTest#testSave

代碼

github地址

gitee地址

本文摘自 :https://www.cnblogs.com/

開通會員,享受整站包年服務立即開通 >