集成atomikos

# 插件集成 为了让开发者更加方便和快速的满足需求,提供了各种插件集成实现方案。 ## 集成atomikos实现分布式事务 在一些复杂的应用开发中,一个应用可能会涉及到连接多个数据源,所谓多数据源这里就定义为至少连接两个及以上的数据库了。 对于这种多数据的应用中,数据源就是一种典型的分布式场景,因此系统在多个数据源间的数据操作必须做好事务控制。在SpringBoot的官网推荐我们使用Atomikos (opens new window)。 当然分布式事务的作用并不仅仅应用于多数据源。例如:在做数据插入的时候往一个kafka消息队列写消息,如果信息很重要同样需要保证分布式数据的一致性。 若依框架已经通过Druid实现了多数据源切换,但是Spring开启事务后会维护一个ConnectionHolder,保证在整个事务下,都是用同一个数据库连接。所以我们需要Atomikos解决多数据源事务的一致性问题 1、ruoyi-framework/pom.xml文件添加atomikos依赖。 ```xml <!-- atomikos分布式事务 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jta-atomikos</artifactId> </dependency> ``` 2、下载插件相关包和代码实现覆盖到工程中 > 提示 > 插件相关包和代码实现ruoyi/集成atomikos实现分布式事务.zip > 链接: https://pan.baidu.com/s/13JVC9jm-Dp9PfHdDDylLCQ 提取码: y9jt 3、测试验证 加入多数据源,如果不会使用可以参考多数据源实现。 对应需要操作多数据源方法加入@Transactional测试一致性,例如。 ```java @Transactional public void insert() { SpringUtils.getAopProxy(this).insertA(); SpringUtils.getAopProxy(this).insertB(); } @DataSource(DataSourceType.MASTER) public void insertA() { return xxxxMapper.insertXxxx(); } @DataSource(DataSourceType.SLAVE) public void insertB() { return xxxxMapper.insertXxxx(); } ``` 到此我们项目多个数据源的事务控制生效了