外观
一句话答案
同一业务 ID 的消息发到同一 Partition/Queue(通过 key hash),单 Partition 内天然有序。
核心要点
Kafka: 指定partition key → 同一key落入同一Partition → 单Partition内有序
RocketMQ: MessageQueueSelector 选择同一Queue
代价: 顺序消息限制并发度,只在真正需要时使用(如订单状态流转)
追问与易错
追问方向:
- 这个概念在你的项目中是怎么应用的?
- 和相关技术/方案相比有什么优劣?
- 如果出了问题你会怎么排查?
易错点:
- ❌ 只知道概念不知道原理——面试官会追问底层实现
- ❌ 缺乏实际使用经验——结合项目场景回答更有说服力
💡 记忆锚点
顺序消息 = 同一个人的快递必须按顺序送:用业务ID做key hash,保证同一用户的消息落入同一条传送带(Partition/Queue),单条传送带天然先进先出。代价是牺牲并发度,只在订单状态流转等真正需要顺序的场景使用。