[英]What's the purpose for Spring AMQP listener transactions
我试图了解事务在 Spring AMQP 中的工作原理。 阅读文档:https://docs.spring.io/spring-amqp/reference/html/#transactions ,我知道在发布者中启用事务的目的(尽力而为一阶段提交模式)但我不知道为什么它可以在 MessageListener 中有必要吗?
让我们举个例子:
acknowledgeMode=AUTO
@RabbitListener
消费消息rabbitTemplate
发布消息根据文档: https://docs.spring.io/spring-amqp/reference/html/#acknowledgeMode ,如果acknowledgeMode
设置为AUTO
那么如果任何下一个操作失败,监听器也会失败并且消息将返回到队列。
另一个问题是在那种情况下本地事务和外部事务之间的区别是什么(设置container.setTransactionManager(transactionManager());
或不设置)?
我会很感激一些澄清:)
在侦听器中启用事务,以便任何/所有下游RabbitTemplate
操作参与同一事务。
如果出现故障,容器将回滚事务(删除发布),nack 消息(或消息,如果批大小大于一个)然后提交 nack,以便重新传递消息。
当使用外部事务管理器(如JDBC)时,容器会将AMQP事务与外部事务同步。
下游模板参与事务,无论它是本地的(仅限 AMQP)还是同步的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.