由于Kafka的一个topic可以分为多个partition,producer发送消息的时候,是分散在不同的partition的。
当producer按顺序发消息给broker,但进入Kafka之后,这些消息就不一定进到哪个partition,会导致顺序是乱的
数据有序、乱序
单分区有序需设置如下
(1)未开启幂等性
max.in.flight.requests.per.connection
需要设置为1
(2)开启幂等性
启用幂等后,kafka 服务端会缓存 producer 发来的最近5个 request 的元数据
无论如何,都可以保证最近5个 request 的数据都是有序的。
max.in.flight.requests.per.connection
需要设置小于等于5