Spring Boot@具有多个DataSource的事务属性


嗨,我有两种不同的方法,它们使用不同的数据源和事务管理器。我使用@Transactional属性和我想要的,如果我的第二个方法抛出异常,则比我的第一个方法执行回滚。但它不起作用,第一种方法不能回滚。我错过了什么?
@Transactional(rollbackFor = Exception.class, isolation = Isolation.READ_COMMITTED,
transactionManager = myTransactionManager", propagation = Propagation.REQUIRED)
public void saveTest(TblTest testEntity)  {
mySecondDBSource.saveTest2(testEntity);(use MyTransactionManager2) //Do job
testTableRepository.save(testEntity); (Use myTransactionManager) //throws Exception
}
//in mySecondDBSource class there is another method
@Transactional(rollbackFor = Exception.class, isolation = Isolation.READ_COMMITTED,
transactionManager = "MyTransactionManager2", propagation = Propagation.REQUIRED)
public void saveTest2(TblTest2 testEntity) {
testTableRepository2.save(testEntity);
}

Spring Data提供了一种通过ChainedTransactionManager处理所谓的链式/分布式事务的方法。

请参阅spring-transaction-with-a-transaction-across-multiple-datasources。

这里还有一个关于媒介的简单指南。

最新更新