在RabbitMQ消息发布之事务中,我们介绍了消息生产者在发布消息时,可以使用其事务操作,其实在RabbitMQ中,消费者在消费者事务时,也是可以使用事务的,其使用方法和生产者一致。
如下,在手动确认模式中,当我们开启了事务,即使我们进行了手动确认消息,但是如果事务不进行提交,或者事务进行回滚了,那么上述的消息还是被RabbitMQ视为为成功消费者的,当该消费者断开时,其余该队列的消费者仍然可以继续消费该消息,所以必须进行commit提交
如上,开启事务后后,即使手动确认了消息,也是必须进行事务提交的,那么如果是自动确认呢?其事务还会起作用么?
这里如果是自动确认,即autoAck=true是不支持事务的,也就是说你即使在收到消息之后在回滚事务也是于事无补的,队列已经把消息移除了。