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

时间:2018-02-27 11:26:39

标签: java apache-kafka kafka-producer-api

根据制作人配置,有:重试 max.in.flight.requests.per.connection 。假设重试> 0和 max.in.flight.requests.per.connection > 1。

邮件是否可以在 ONE 主题分区中无序传递(例如,如果第一条消息重试,但第一条消息在第一次尝试时传递给代理)?

或者乱序只发生在主题的几个分区上,但是在分区顺序内是否会保留?

1 个答案:

答案 0 :(得分:4)

如果将retries设置为大于0而max.in.flight.requests.per.connection设置为大于1,那么即使这些消息属于同一分区,也可能无法在代理上到达。

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

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