生产者重试时分区中的 Kafka 消息排序

Kafka message ordering in partition while producer retry

根据生产者配置,有:重试max.in.flight.requests.per.connection。假设 重试 > 0 并且 max.in.flight.requests.per.connection > 1.

消息能否在主题的 ONE 分区内乱序到达(例如,如果第一条消息已重试,但第二条消息在第一次尝试时传递给代理)?

或者乱序只发生在主题的几个分区中,但在分区内顺序被保留?

如果您将 retries 设置为大于 0 并将 max.in.flight.requests.per.connection 设置为大于 1,那么是的消息可能会乱序到达代理,即使它们是针对同一分区也是如此。

如果消息被正确添加到 Kafka 日志并且在将响应发送回客户端时发生错误,您也可以有重复项。

从Kafka 0.11开始,可以使用幂等生产者来解决这两个问题。参见 http://kafka.apache.org/documentation/#semantics

根据最新的更新文档,您最多可以有 5 个 max.in.flight.requests.per.connection,Kafka 可以为此维护顺序。