外观
一句话答案
RocketMQ 原生支持 18 级延迟消息,Kafka 无原生支持需自行实现(时间轮/Redis ZSET/DB 轮询)。
核心要点
RocketMQ 延迟消息: 设置 delayLevel → 先投递到 SCHEDULE_TOPIC → 到时间后转到目标 Topic
通用方案: 时间轮(HashedWheelTimer) / 延迟队列(Redis ZSET) / DB 定时扫描
订单超时场景: RocketMQ 延迟消息 > Redis ZSET > 定时扫描
追问与易错
追问方向:
- 这个概念在你的项目中是怎么应用的?
- 和相关技术/方案相比有什么优劣?
- 如果出了问题你会怎么排查?
易错点:
- ❌ 只知道概念不知道原理——面试官会追问底层实现
- ❌ 缺乏实际使用经验——结合项目场景回答更有说服力
💡 记忆锚点
延迟消息 = 定时炸弹:RocketMQ原生支持18个档位(像微波炉预设时间),Kafka没有预设档位得自己造定时器(时间轮/Redis ZSET/DB轮询)。订单30分钟未支付自动取消就是典型场景。