spring-boot入门(七)atomikos+druid+多数据源下的分布式事务配置

本文介绍了如何在Spring Boot中结合Atomikos和Druid配置多数据源下的分布式事务。首先,通过引入Atomikos依赖并自定义相关属性来设置JTA事务管理器。接着,配置XA数据源,利用AtomikosDataSourceBean包装Druid数据源以支持分布式事务。最后,通过测试验证了事务在异常情况下能够正确回滚。
摘要由CSDN通过智能技术生成

spring-boot入门(七)atomikos+druid+多数据源下的分布式事务配置

本章内容是基于spring-boot入门(六)多数据源的基础之上进行的,如果还不了解多数据源怎么配置,请参考上一章节的内容。在上一章节的末尾我们遗留了一个问题:多数据源下的分布式事务问题。在分布式事务下我们需要使用JTA(Java Transaction API)事务来处理事务,保证事务的强一致性,即要成功都成功,一个失败全部回滚。Atomikos 是一个为Java平台提供增值服务的并且开源类事务管理器,本章我们将使用Atomikos 来解决分布式事务问题。

1. 配置atomikos

JTA事务的配置需要配置:XA数据源和JTA事务管理器

1.1 引入atomikos依赖

spring boot集成atomikos,只需添加一下依赖即可

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

1.2 自定义atomikos相关属性(自动注入JTA事务管理器)

如果不自定义相关属性,那么spring boot 会初始化默认的atomikos配置,可看org.springframework.boot.autoconfigure.transaction.jta.AtomikosJtaConfiguration是如何初始化默认的配置。当然也可以自定义atomikos,通过该配置spring boot会启用atomikos实现的JTA事务管理器。

spring:
  jta:
    atomikos:
      properties:
        max-actives: 50
        max-timeout: 300000
        default-jta-timeout: 10000
        enable-logging: true

上面是atomikos的一个配置示例。更多可查看org.springframework.boot.jta.atomikos.AtomikosProperties。

1.3 配置XA数据源

   @Bean
    @Primary
    @ConfigurationProperties(prefix = "boc.datasource")
    public DataSource bocDataSource(@Qualifier("bocDataSourceProperties") DataSourceProperties dataSourceProperties) throws SQLException {
        DruidXADataSource druidXADataSource = new DruidXADataSource();
        InitDruidDataSource(druidXADataSource, dataSourceProperties);

        AtomikosDataSourceBean atomikosDataSource = new AtomikosDataSourceBean();
        atomikosDataSource.setUniqueResourceName("bocDataSource");
        atomikosDataSource.setXaDataSource(druidXADataSource);
        atomikosDataSource.setTestQuery("SELECT 1");
        return atomikosDataSource;
    }

    @Bean
    @Conf
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值