04_基于JTA+Druid多数据源+Atomikos实现单实例多数据源的事务控制

一. JTA+Druid+Atomickos的使用方式

1.1 引入依赖

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

1.2 增加配置

在application.yml中增加如下配置,db1、db2指的是我们配置的多数据源。

db1:
  datasource:
    type: com.alibaba.druid.pool.xa.DruidXADataSource
db2:
  datasource:
    type: com.alibaba.druid.pool.xa.DruidXADataSource
jta:
  log-dir: classpath:tx-logs
  transaction-manager-id: txManager

1.3 druid数据源配置

  1. 去掉单库使用的DatasourceTransactionManager
  2. 使用JtaTransactionManager,参考下述代码
@Bean(name = "myJtm")
@Primary
public JtaTransactionManager activityTransactionManager() {
   
	UserTransactionManager userTransactionManager = new UserTransactionManager();
	UserTransaction userTransaction = new UserTransactionImp();
	return new JtaTransactionManager(userTransaction, userTransactionManager);
}

我们可能会配置多个数据源,不过只需要在任意一个数据源中,加上对事务管理器(JtaTransactionManager)的配置就可以了。

JtaTransactionManager来自: org.springframework.transaction.jta.JtaTransactionManager
UserTransactionManager来自: com.atomikos.icatch.jta.UserTransactionManager

  1. 对于Datasource的创建,参考如下代码
@Primary
@Bean(name = "db1Datasource")
public DataSource activityDatasource() {
   
	DruidXADataSource datasource = new DruidXADataSource();
	datasource.setUrl(this.dbUrl);
	datasource.setUsername(username);
	datasource.setPassword(password);
	datasource.setDriverClassName(driverClassName);
	datasource.setInitialSize(initialSize
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值