admin管理员组

文章数量:1641807

一、topic 只有单个分区(partition)

Kafka 本身是保证 partiton 中消息的顺序性的,所以单分区下不用特别考虑顺序性问题。

在比较特殊的消息重试情况下,假如消息1失败了,消息2、3会排到消息1前面。若想杜绝此情况,需要把 Kafka 的max.in.flight.requests.per.connection参数设置为 1

二、topic 具有多个 partition

如果消息分散在不同的 partition,Kafka 无法保证其顺序性。但只需要确保要求顺序性的若干消息发送到同一个 partiton,即可满足其顺序性。

解读 Kafka 源码可知,key相同的消息,会发送到同一个 partition,对应源码如下:

// org.apache.kafka.clients.producer.KafkaProducer#doSend
serializedKey = keySerializer.serialize(record.topic<

本文标签: 顺序Kafka