java - @TransactionalEventListener 如何绑定 TransactionManager
问题描述
我的项目中有多个数据源,每个数据源对应一个事务管理器,它们共享一个方面。现在我的项目有一个问题:事务提交后需要处理一些逻辑,比如发送Mq消息。我尝试使用@TransactionalEventListener实现,但是发现在AbstractPlatformTransactionManager.processCommit()中,他监听了其他事务的提交。我很疑惑,有什么解决办法吗?@TransactionEventListener中的条件怎么用?春季版本 5.1.5.RELEASE
解决方案
我不确定这是否能解决您的问题,但处理多个 TransactionManager 的一种方法是在@Transactional
注释中添加一个参数,告诉您使用哪个 TransactionManager:
public class TransactionalService {
@Transactional("order")
public void setSomething(String name) { ... }
@Transactional("account")
public void doSomething() { ... }
}
推荐阅读
- vb.net - 在某些 PC 上无法解析主机名错误
- node.js - 护照未登录 | 因战略而思考
- python - 我对 cv2.findContours 有错误(...)
- ios - Swift 4 - 使用哪种类型的数组 - 将 JSON 响应解析为数组
- python - Wagtail - 以编程方式编辑现有页面
- azure-active-directory - 混合基于 OIDC 的 SPA 客户端 + OAuth 服务器客户端场景?
- php - componenthelp.php 中缺少组件错误 Joomla
- php - 在文件中搜索元素数组并将它们替换为另一个元素数组 -php
- javascript - 流和 Javascript 。无法调用函数,因为对象类型中缺少属性
- php - Symfony/Doctrine 命令“make:migration”和“doctrine:migrations:diff”之间的区别