Spring-boot + atomikos + druid分布式事务配置

xiaoxiao2021-02-28  113

Spring-boot + atomikos + druid分布式事务配置

1.额外依赖项

<dependency> <groupId>javax.transaction</groupId> <artifactId>jta</artifactId> <version>1.1</version> </dependency> <dependency> <groupId>com.atomikos</groupId> <artifactId>transactions-jta</artifactId> <version>4.0.4</version> </dependency> <dependency> <groupId>com.atomikos</groupId> <artifactId>transactions-jdbc</artifactId> <version>4.0.4</version> </dependency>

2.数据源配置(yml配置,有几个数据源配置几个数据源,这里使用阿里Druid数据库连接池)

datasource: # 资源标识 uniqueResourceName: datasource1 # 数据源类名 xaDataSourceClassName: com.alibaba.druid.pool.xa.DruidXADataSource # 数据源配置 xaProperties: driverClassName: com.mysql.jdbc.Driver url: @spring.datasource.url@ username: @spring.datasource.username@ password: @spring.datasource.password@ initialSize: 3 minIdle: 3 maxActive: 20 maxWait: 60000 timeBetweenEvictionRunsMillis: 60000 minEvictableIdleTimeMillis: 300000 validationQuery: SELECT 1 testWhileIdle: true testOnBorrow: false testOnReturn: false poolPreparedStatements: true maxPoolPreparedStatementPerConnectionSize: 20 filters: stat

3.数据源以及事物管理器注入

// 数据源有几个配置几个 /** * 注入数据源 * @return */ @Bean @ConfigurationProperties(prefix = "datasource") public DataSource regDataSource() { return new AtomikosDataSourceBean(); } /** * 注入事物管理器 * @return */ @Bean(name = "xatx") public JtaTransactionManager regTransactionManager () { UserTransactionManager userTransactionManager = new UserTransactionManager(); UserTransaction userTransaction = new UserTransactionImp(); return new JtaTransactionManager(userTransaction, userTransactionManager); }

4.注解使用

@Override @Transactional(transactionManager = "xatx", propagation = Propagation.REQUIRED, rollbackFor = { java.lang.RuntimeException.class }) public XXX function() { }
转载请注明原文地址: https://www.6miu.com/read-83176.html

最新回复(0)