atomikos实现分布式事务
概述
多数据源单服务写入, 分布式事务实现
使用随机数控制产生异常
注: 网上很多都是只有多数据源配置,实际不能控制事务统一回滚,
单服务场景下如果多个数据源只有一个写,剩下都是读, 则不需要分布式事务
为减少篇幅,详细代码在代码仓库,可自行参考
版本
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地址
atomikos实现分布式事务相关推荐
- spring整合atomikos实现分布式事务的方法示例_分布式事务一:基于数据库原生分布式事务方案实现...
1.分布式事务模型 ACID 实现 1.1.X/Open XA 协议(XA) 最早的分布式事务模型是 X/Open 国际联盟提出的 X/Open Distributed Transaction Pro ...
- spring整合atomikos实现分布式事务的方法示例_分布式-分布式事务处理
在之前的文章"如何合理的使用动态数据源"中,其实也提到了分布式事务相关的场景如:利用多数据源实现读写分离,但直接使用动态数据源频繁其实是很消耗资源的,而且就是当业务service一 ...
- spring事务隔离级别、传播行为以及spring+mybatis+atomikos实现分布式事务管理
1.事务的定义:事务是指多个操作单元组成的合集,多个单元操作是整体不可分割的,要么都操作不成功,要么都成功.其必须遵循四个原则(ACID). 原子性(Atomicity):即事务是不可分割的最小工作单 ...
- spring整合atomikos实现分布式事务的方法示例_分布式事务中的XA和JTA
在介绍这两个概念之前,我们先看看是什么是X/Open DTP模型. X/Open X/Open,即现在的open group,是一个独立的组织,主要负责制定各种行业技术标准.X/Open组织主要由各大 ...
- JTA+Atomikos解决分布式事务问题
JTA分布式事务:Java Transaction API,允许应用程序执行分布式事务处理. Atomikos:为java平台提供增值服务并且开源的事务管理器. 基于xa协议,xa协议是以两阶段提交协 ...
- java分布式事务 实例_spring整合atomikos实现分布式事务的方法示例
前言 Atomikos 是一个为Java平台提供增值服务的并且开源类事务管理器,主要用于处理跨数据库事务,比如某个指令在A库和B库都有写操作,业务上要求A库和B库的写操作要具有原子性,这时候就可以用到 ...
- spring 事务的实现方式和原理_spring整合atomikos实现分布式事务
前言 Atomikos 是一个为Java平台提供增值服务的并且开源类事务管理器,主要用于处理跨数据库事务,比如某个指令在A库和B库都有写操作,业务上要求A库和B库的写操作要具有原子性,这时候就可以用到 ...
- springBoot入门总结(八)使用 jta+atomikos 整合springBoot分布式事务
一.JTA:Java Transaction Manager 事务是计算机应用中不可或缺的组件模型,它保证了用户操作的原子性 ( Atomicity ).一致性 ( Consistency ).隔离性 ...
- 分布式事务解决方案——基于Atomikos的实现
声明:以下关于"JTA规范事务模型"."Spring JTA分布式事务的实现"等内容均来源于其他大佬的博客内容,并已经表明出处. 1.JTA规范事务模型 J ...
最新文章
- 2020 AI前沿交流大会 | 聚焦CV/NLP最新学术及工业界实践
- 关于/etc/fstab
- 修改Centos7默认yum源为阿里云源
- 使用 frida+dexdump对apk脱壳
- linux/npm/git的简单操作
- [luoguP2324] [SCOI2005]骑士精神(A*?)
- idea--Project Structure
- mysql 数据库异常_Mysql连接数据库异常汇总【必收藏】
- 第三十六课:告别演出
- 稀疏矩阵转置 java代码_三元组稀疏矩阵的快速转置
- python归纳算法_【Python算法】归纳、递归、归简
- hrbust 哈理工oj 1921 三原色(改进版)【集合相关问题】
- attachEvent报错原因
- 面向未来的100项颠覆性创新技术!欧盟重磅报告
- 对待工作的态度和意识
- 新零售全渠道营销,线上经营,线下成长
- 英语口语100之每日十句口语
- web端接收读卡器卡片信息
- 信息安全工程师(软考中级)
- 1.ME32F103单片机ADC和DMA
热门文章
- 【SugerTangYL】SPI协议及其变体
- 小姨又又来了之!给我儿子写一个英语闯关脚本!好还会Python
- 如何选择Z检验、T检验和卡方检验?
- 超级卵杰的自动脚本(3)签到 抢分 入团 压分功能。
- 数据库之数据库编码格式
- java cause_java常见错误Cause java.sql.SQLSyntaxErrorException Table ‘m
- .net 连接oracle 无法解析指定的连接标识符,asp.net – Oracle.ManagedDataAccess:TNS:无法解析指定的连接标识符...
- 很重要:数据的三维可视化
- GIS空间分析 三维分析3 要素三维可视化
- 显著性、显著水平 学习笔记