拿下技术面上传简历

订单创建后向 MQ 发一条消息,下游消费者负责给用户加积分。现状是:生产者发完消息后不看 broker 的返回;消费者配置成自动 ack;消费逻辑是『查积分表 → 计算新积分 → 写回积分表』。上线一段时间后发现积分偶发少加、也偶发多加。这两类问题分别可能出在哪一环?你会怎么改?

工程与系统设计数据与存储1-3 年知识点 1 个

面试官在考什么

判断候选人是否清楚消息在『生产、broker、消费』三段中各会在哪里丢或重,以及幂等到底该落在哪一层、用什么键实现。

消息队列

回答框架 · 前两步

  1. 积分少加对应丢消息:生产者不等 broker 的 confirm,发送失败或 broker 未完成持久化时消息就没了;消费者自动 ack 意味着消息一投递就被确认,处理中进程崩溃不会重投,积分同样丢失。
  2. 积分多加对应重复投递:即便改成手动 ack,业务已经提交但 ack 在网络上超时或消费者重启,broker 会重投同一条消息,MQ 通常只保证 at-least-once。

还有 3 条答案要点、 3 层追问、 5 个常见坑, 以及针对你简历的追问路径,在定制报告里。

上传简历,生成我的题库先看示例报告

同一能力域的其他题