开发喵星球

若依集成atomikos实现分布式事务(134)

在一些复杂的应用开发中,一个应用可能会涉及到连接多个数据源,所谓多数据源这里就定义为至少连接两个及以上的数据库了。 对于这种多数据的应用中,数据源就是一种典型的分布式场景,因此系统在多个数据源间的数据操作必须做好事务控制。在SpringBoot的官网推荐我们使用Atomikos。 当然分布式事务的作用并不仅仅应用于多数据源。例如:在做数据插入的时候往一个kafka消息队列写消息,如果信息很重要同样需要保证分布式数据的一致性。

若依框架已经通过Druid实现了多数据源切换,但是Spring开启事务后会维护一个ConnectionHolder,保证在整个事务下,都是用同一个数据库连接。所以我们需要Atomikos解决多数据源事务的一致性问题

1、ruoyi-framework/pom.xml文件添加atomikos依赖。

<!-- atomikos分布式事务 -->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-jta-atomikos</artifactId>
</dependency>

2、下载插件相关包和代码实现覆盖到工程中

插件相关包和代码实现ruoyi/集成atomikos实现分布式事务.zip

链接: https://pan.baidu.com/s/1Tc5n_BGFP-75TNZeVm2kZA
提取码: meow

3、测试验证

加入多数据源,如果不会使用可以参考多数据源实现。

对应需要操作多数据源方法加入@Transactional测试一致性,例如。

@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();
}

到此我们项目多个数据源的事务控制生效了。

   
分类:Java/OOP 作者:无限繁荣, 吴蓉 发表于:2024-03-01 19:01:06 阅读量:189
<<   >>


powered by kaifamiao