在Kafka中,当开启重试机制()且允许并发发送时,确实极易产生乱序问题。 乱序产生的原因:假设Producer并发发送了消息A和消息B到同一个Partition。消息A因为网络抖动发送失败,而消息B发送成功。随后Producer对消息A进行重试并成功。此时,Partition中保存的顺序就变成了 B -> A,打破了原有的绝对保序要求。 为了在并发发送且开启重试的场景下保证单Partition绝对保序,可以通过以下两种维度的方案来解决: --- 方案一:开启 Producer 的幂等性(推荐,现代 Kafka 标准做法) 从 Kafka 0.11 版本开始引入了幂等性(Idempotence)机制。这不仅能解决重复发送的问题,还能完美解决开启重试后的乱序问题,同时不影响并发吞吐量。 1. 配置方法 在 Producer 端进行如下配置: (开启幂等性。注意:Kafka 3.0 及以上版本默认已开启)。 (或 ,开启幂等性必须设置为 all)。 (必须小于等于5,通常建议保持默认值 5)。 (开启重试,建议设为 ,交由 控制总时长)。 2. 底层保序原理 开启幂等性后,Kafka...