|
|
1
1
是什么 阿克斯 ?
acks参数有3个值: 阿克斯 =0时,在假定消息已成功发送之前,生产者不会等待代理的答复。 阿克斯 =1时,生产者将在领头副本接收到消息时从代理接收到成功响应。如果无法将消息写入leader,生产者将收到错误响应并可以重试。 =all,一旦所有同步副本接收到消息,生产者将从代理接收成功响应。 在您的示例中,acks=all,这是最安全的方法,因为您可以确保多了一个代理拥有该消息。 重试 如果生产者接收到错误消息,那么retries属性的值就会出现在图片中。你可以用 重试.backoff.ms 属性来配置重试间隔时间。建议您测试从崩溃的代理恢复所需的时间,并设置重试次数和重试之间的延迟,以便重试所花费的总时间将长于Kafka集群从零开始恢复所需的时间。 另外,检查下面的链接, https://www.confluent.io/blog/hands-free-kafka-replication-a-lesson-in-operational-simplicity/ |
|
|
2
0
对于上述场景,您将得到NotEnoughReplicasException。在这个阶段,卡夫卡重新考虑了这个信息 卡夫卡的默认重试值为0<=2.0,对于Kafka,此值设置为非常高的值>=2.1 此外,还有另一个名为“retry.backof.ms”的设置。此设置的默认值为100ms。Kafka producer将每隔100ms重试一次以生成此消息,直到成功。 另外,您可能需要考虑“max.in.flight.requests”设置,以确保在Kafka消息中有密钥时,按顺序处理重试消息 |