阅读有关主题分区中消息排序的文章:https : //blog.softwaremill.com/does-kafka-really-guarantee-the-order-of-messages-3ca849fd19d2
允许重试而不将max.in.flight.requests.per.connection设置为1可能会更改记录的顺序,因为如果将两个批次发送到单个分区,并且第一个批次失败并被重试,但是第二个批次成功,则记录在第二批中可能会首先出现。
据此,可以通过两种类型的生产者配置来实现订购保证:
max.in.flight.requests.per.cOnnection=1 // can impact producer throughput
或替代
enable.idempotence=true max.in.flight.requests.per.connection //to be less than or equal to 5 max.retries // to be greater than 0 acks=all
谁能解释第二种配置如何实现订单保证?另外,在第二个配置中,仅启用一次语义。