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

pav*_*hov 1 java apache-kafka kafka-producer-api

根据生产者配置,有:重试max.in.flight.requests.per.connection。假设重试 > 0,最大飞行请求数/每次连接数 > 1。

消息是否可以在一个主题分区内乱序到达(例如,如果第一条消息已重试,但第二条消息却是第一次尝试传递给代理)?

还是仅在主题的多个分区之间发生乱序,但保留分区内的顺序?

Mic*_*son 5

如果将其设置retries为大于0且max.in.flight.requests.per.connection大于1,则yes消息即使在同一分区上也可能在代理上到达混乱。

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

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