【发布时间】:2020-03-04 07:13:03
【问题描述】:
阅读这篇关于主题分区中消息排序的文章: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
谁能解释第二个配置如何实现订单保证?同样在第二个配置中启用了一次性语义。
【问题讨论】:
标签: apache-kafka kafka-producer-api