0
点赞
收藏
分享

微信扫一扫

分布式事务太繁琐?官方推荐Atomikos,5分钟帮你搞定

思考的鸿毛 2021-09-18 阅读 53

前言

最近有个项目,里面涉及到多个数据源的操作,按照以前的做法采用MQ来做最终一致性,但是又觉得繁琐些,项目的量能其实也不大很小,想来想去最终采用Atomikos来实现。

XA是啥

在做Atomikos之前,我们先来了解一下什么是XA。XA是由X/Open组织提出的分布式事务的一种协议(或者称之为分布式架构)。它主要定义了两部分的管理器,全局事务管理器及资源管理器。在XA的设计理念中,把不同资源纳入到一个事务管理器进行统一管理,例如数据库资源,消息中间件资源等,从而进行全部资源的事务提交或者取消,目前主流的数据库,消息中间件都支持XA协议。

JTA又是啥

上面讲完XA协议,我们来聊聊JTA,JTA叫做Java Transaction API,它是XA协议的JAVA实现。目前在JAVA里面,关于JTA的定义主要是两部分

1、事务管理器接口-----javax.transaction.TransactionManager

2、资源管理器接口-----javax.transaction.xa.XAResource

在一般应用采用JTA接口实现事务,需要一个外置的JTA容器来存储这些事务,像Tomcat。今天我们要讲的是Atomikos,它是一个独立实现了JTA的框架,能够在我们的应用服务器中运行JTA事务。

接下来我们直接进入到主题,在一个微服务应用中,针对多数据源的时候如何实现分布式事务。

基础包引入

配置第一个数据源


配置第二个数据源


配置数据源管理器


配置常量


配置信息

运行测试

我们定义了一个接口并实现该接口,定义了一个test方法,根据不同情况手动抛出异常,在运行后可以直接看到数据并没有被插入到数据中


总结

实验结果测试没问题,这里就不贴出来,有兴趣的同学可以通过以下获取源码

--END--

原创作品,抄袭必究

如需要源码,转发,关注后私信我

部分图片或代码来源网络,如侵权请联系删除,谢谢!

举报

相关推荐

0 条评论