分布式与消息队列 · 单选题 · 第 61 题
Java 后端开发面试 · 第 61 题
关于 Kafka 的消息顺序,下列说法正确的是?
- AKafka 保证整个主题内的全部消息严格有序,与分区的数量没有关系
- BKafka 完全不保证任何顺序,应用必须自己按时间戳重新排序之后再处理
- CKafka 会按照消息里的时间戳自动排序,所以不同分区之间也是有序的
- D只保证同一分区内有序;需要有序的消息应使用相同的 key,发往同一分区
答案
D D. 只保证同一分区内有序;需要有序的消息应使用相同的 key,发往同一分区
解析
分区是 Kafka 的并行单位,每个分区是一个只追加的日志,消费者按偏移量顺序读取,因此分区内有序。同一订单的消息用订单号作 key,哈希到同一分区,就能保证这笔订单的事件按顺序处理。开启幂等生产者可以避免重试时的乱序和重复。