Urb*_*leg 5 spring transactions xa rabbitmq
在我们的新项目中,我们希望实现涉及 jpa (mysql) 和消息总线 (rabbitmq) 的事务
我们开始使用 mysql 和 rabbitmq(通过 spring amqp 模块)使用 spring 数据构建我们的基础设施。由于rabbitMq 不是XA-transactional,我们将neo4j chainedTransactionManager 配置为我们的主要transactionManager。这个管理器将 jpa txManager 和 rabbitTransactionManager 作为参数。
现在,我确实能够使用 @Transacitonal 注释服务并在其中同时使用 jpa 和 rabbit 。如果我在服务中抛出异常,则实际上不会发生任何操作。
以下是我的问题:
它ChainedTransactionManager
所做的基本上是以相反的顺序启动和提交事务。因此,如果您有 aJpaTransactionManager
和 aRabbitTransactionManager
并像这样配置它。
@Bean
public PlatformTransactionManager transactionManager() {
return new ChainedTransactionManager(rabbitTransactionManager(), jpaTransactionManager());
}
Run Code Online (Sandbox Code Playgroud)
现在,如果 JPA 提交成功,但对rabbitMQ 的提交失败,您的数据库更改仍将保留,因为这些更改已经提交。
要回答您的第一个问题,它不会为您提供真正的原子事务,在发生Exception
(提交时)之前已提交的所有内容都将保持提交状态。
归档时间: |
|
查看次数: |
2004 次 |
最近记录: |