首页 > 解决方案 > @TransactionalEventListener 如何绑定 TransactionManager

问题描述

我的项目中有多个数据源,每个数据源对应一个事务管理器,它们共享一个方面。现在我的项目有一个问题:事务提交后需要处理一些逻辑,比如发送Mq消息。我尝试使用@TransactionalEventListener实现,但是发现在AbstractPlatformTransactionManager.processCommit()中,他监听了其他事务的提交。我很疑惑,有什么解决办法吗?@TransactionEventListener中的条件怎么用?春季版本 5.1.5.RELEASE

标签: javaspringdatasourcemybatisspring-transactions

解决方案


我不确定这是否能解决您的问题,但处理多个 TransactionManager 的一种方法是在@Transactional注释中添加一个参数,告诉您使用哪个 TransactionManager:

public class TransactionalService {

    @Transactional("order")
    public void setSomething(String name) { ... }

    @Transactional("account")
    public void doSomething() { ... }
}

请参阅https://docs.spring.io/spring-framework/docs/4.2.x/spring-framework-reference/html/transaction.html#tx-multiple-tx-mgrs-with-attransactional了解更多详情。


推荐阅读