31. RabbitMQ顺序消费

1. 前言

上个小节中我们介绍了 RabbitMQ 中如何防止消息丢失,即保证消息发送的 At Least Once 性质,除此之外,如何防止消息被重复消费,即保证消息消费的 Exactly Once 性质,也是业务逻辑中需要考虑的问题。

2. 消息消费顺序

面试官提问:业务中使用了 RabbitMQ 消息队列,如何保证消息的顺序消费?

题目解析

保证消息的顺序消费是业务场景下经常面临的挑战,可能在面试中会涉及到一些实战场景,例如电商的下单逻辑,在用户下单之后,会发送创建订单和扣减库存的消息,我们需要保证扣减库存在创建订单之后执行。

在MQ层面支持消息的顺序消费是一件开销很大的操作,例如使用事务,所以除非特定场景,一般不在 RabbitMQ 消息传输底层支持顺序。在上层即应用层处理业务逻辑是常规操作,有两种通用解决方案:

(1)同步发送消息:将消息发送从异步模式切换为同步模式,例如先发送创建订单消息,当创建订单的下游消费者发送ACK确认成功消费后,再发送扣减库存的消息;
(2)消息实体增

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

郭晟玮

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值