【发布时间】:2021-12-28 17:30:03
【问题描述】:
我在事务中有很大的任务(@Transactional 方法)。在这个任务中,id-s 被收集,然后在事务提交之后必须将它们发送到 RabbitMQ(使用 convertAndSend 方法)。另一端的 RabbitMQ 侦听器获取 id 并更新 DB 中的状态(在事务更改后更新状态很重要,因为只有在它们之后更新的数据才是实际的) 我有下一个问题:
- 在事务的最后(提交)中使用钩子的最佳方法是什么?我需要为多个服务类(许多事务方法)创建一个“afterCommit”方法;
- 我需要用什么来存储 ID?我曾想过像 ThreadLocal 变量这样的东西,但这不是一个变体 - 如果有并行流,则创建新线程;
- 可能有其他解决方案吗?
我已经阅读了有关延迟 RabbitMQ 插件的信息,但它不是我的任务的变体 4 - 他们的时间非常不同。
【问题讨论】:
标签: spring hibernate rabbitmq spring-transactions