面试最常问面试冲刺 · 框架、分布式与大模型
怎样保证消息不丢失、不重复消费?
先自己想一想,再看参考要点
参考要点
- 不丢:发送端收到确认才算成功(如 Kafka acks=all 加重试),可用与业务同事务的本地消息表
- 存储端持久化加多副本,消费端处理完再提交偏移量或 ack
- 不重复:处理完才确认意味着可能重复投递,消费要幂等,用订单号加事件类型这类业务键写去重表并与业务同事务,或用状态做条件更新
- 消息队列的恰好一次代替不了业务幂等
学习站:先用面试题自评定级,按水平和面试日期排出每天的计划,自评过的题按间隔复习。免费、无需注册,记录只保存在自己的浏览器中。