gpt4 book ai didi

spring - 如果使用 Spring AMQP 的数据库事务成功,则仅将消息发布到 RabbitMQ

转载 作者:行者123 更新时间:2023-12-01 11:50:17 24 4
gpt4 key购买 nike

假设我有一个看起来像这样的方法:

@Transactional
public void x(Entity entity) {
// do something
myRepository.save(entity);
rabbitTemplate.convertAndSend(new Event1());
rabbitTemplate.convertAndSend(new Event2());
}

myRepository 使用类型为 org.springframework.orm.jpa.JpaTransactionManager 的事务管理器。我想要做的是确保 Event1Event2 的发送仅在 myRepository.save(entity) 成功时发生。是否RabbitTransactionManager在这里提供帮助还是我必须自己实现(例如使用 TransactionSynchronizationManager )?

最佳答案

什么调用了 x()

如果它是一个 RabbitMQ 监听器容器线程,在从 rabbit 接收到一些消息后,将 JpaTransactionManager 添加到容器中,rabbit 事务将为您同步。

如果它是某个任意线程,那么您需要在调用 x 之前启动一个 rabbit 事务,然后再提交它。

无论哪种情况,您的兔子 channel 都需要是事务性的。

关于spring - 如果使用 Spring AMQP 的数据库事务成功,则仅将消息发布到 RabbitMQ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35602439/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com