kafka retries参数入门
生产者从服务器收到的错误有可能是临时性的错误(比如分区找不到首领)。在这种情况下, retries参数的值决定了生产者可以重发消息的次数,如果达到这个次数,生产者会放弃重试并返回错误。默认情况下,生产者会在每次重试之间等待100ms ,可以通过retry.backoff.ms 参数来配置时间间隔。比如,设置了acks=all和min.insync.replicas=2。由于某种原因,所有follo
·
生产者从服务器收到的错误有可能是临时性的错误
(比如分区找不到首领)。在这种情况下, retries
参数的值决定了生产者可以重发消息的次数,如果达到这个次数,生产者会放弃重试并返回错误。默认情况下,生产者会在每次重试之间等待100ms
,可以通过retry.backoff.ms
参数来配置时间间隔。
比如,设置了acks=all
和min.insync.replicas=2
。由于某种原因,所有follower
都挂了,由于min.insync.replicas=2
,所以生产者无法收到来自Broker
端的ack
。
此时我们会从Producer
端收到一个错误消息:“Broker: Not enough in-sync replicas”。这就意味着Kafka
不能在Broker上追加生产的消息(数据)了,因为此时的ISR
的数量不够。此时在Broker端会有如下的错误消息:
org.apache.kafka.common.errors.NotEnoughReplicasException: ThesizeofthecurrentISRSet(0) isinsufficienttosatisfythemin.isrrequirementof 2 forpartition
默认情况下,Producer
不会对此错误进行处理,这就会造成消息丢失,即**at-most-once **语义。我们可以通过配置重试次数来让生产者重新发送消息。比如配置retries=3
,默认为0
总结
- 生产环境这个参数是一定要设置的
更多推荐
已为社区贡献18条内容
所有评论(0)