Apache kafka 在Kaka Producer中配置重试的最佳方法

Apache kafka 在Kaka Producer中配置重试的最佳方法,apache-kafka,kafka-producer-api,Apache Kafka,Kafka Producer Api,同步副本配置为Acks=all和min.insync.replicas=N 想了解如何为未处理的生产者记录的消息/记录配置重试 例如: 当Kafka在处理过程中无法处理ISR online为N-1且最低配置ISR为N个副本的记录时。对于上述场景,您将获得noteNoughReplicaseException。在这个阶段,卡夫卡重新发布了信息 kafka=2.1的默认重试值为0 此外,还有另一个名为“retry.backof.ms”的设置。此设置的默认值为100ms。Kafka producer将

同步副本配置为Acks=allmin.insync.replicas=N

想了解如何为未处理的生产者记录的消息/记录配置重试

例如:
当Kafka在处理过程中无法处理ISR online为N-1且最低配置ISR为N个副本的记录时。

对于上述场景,您将获得noteNoughReplicaseException。在这个阶段,卡夫卡重新发布了信息 kafka=2.1的默认重试值为0 此外,还有另一个名为“retry.backof.ms”的设置。此设置的默认值为100ms。Kafka producer将每隔100毫秒重试一次以生成此消息,直到成功。 为了避免无限次重试,或者您可以设置“delivery.timout.ms”以确保生产者重试发送该人毫秒的消息。它的默认值为120000ms。只需要2分钟。意味着,生产者在2分钟后不会重试,并将消息视为失败。
此外,您可能需要考虑“Max in .Fun.Advestress”设置,以确保当卡夫卡消息中有一个关键字

时,重试消息是按顺序处理的:什么是<强> ACK<强> >?

ACK参数控制在生产商可以考虑写入成功之前,多个分区副本必须接收记录。 acks参数有3个值:

acks=0,在假定消息成功发送之前,生产者不会等待代理的答复

acks=1,生产者将在领头副本接收到消息时从代理接收到成功响应。如果无法将消息写入领导,则生产者将收到错误响应,并可以重试

acks=all,一旦所有同步副本收到消息,生产者将从代理收到成功响应

在您的例子中,acks=all,这是最安全的方法,因为您可以确保多了一个代理拥有该消息

重试

如果生产者收到错误消息,那么retries属性的值就会出现在图片中。您可以使用retry.backoff.ms属性来配置重试间隔时间。建议测试从崩溃的代理恢复所需的时间,并设置重试次数和重试之间的延迟,以使重试所花费的总时间长于Kafka群集从零开始恢复所需的时间

另外,请查看下面的链接