对于分布式事务的疑问?
来源:8-13 实际开发中的经验小结

慕沐3053333
2021-05-10
我们基于RabbitMQ开发分布式事务框架,确实保证了消息100%投递和消费端重试。
我在消费端重试这有一个疑问。
假如A服务和B服务之间通过该章节完成的分布式事务框架进行通信,A服务投递了某账号扣100元的消息到MQ集群,B服务获得该消息后,在数据库中对该账号扣减了100元,也提交了事务,在返回ack给MQ集群时突然宕机了,MQ集群一直没有收到消费者的确认信号,并且由于宕机导致消费者已经和MQ集群断开连接,消息就会重回队列。之后宕机的B服务恢复了,又再次消费了该消息,又再扣减了100元。这样岂不是多扣了100元?
写回答
1回答
-
Moody
2021-05-11
B服务可以在事务的最后ACK消息,这样ACK异常时,事务可以回滚。
042021-05-14
相似问题