卡夫卡消费者何时重试?

时间:2019-07-18 22:37:32

标签: apache-kafka kafka-consumer-api

Kafka客户端上有重试功能。我正在努力找出何时重试。如果与代理的连接短暂中断,是否会重试?如果5分钟内无法联系到经纪人,该怎么办?经纪人备份后,消息会被传递吗?还是仅在已知情况下对kafka客户端进行重试?

1 个答案:

答案 0 :(得分:1)

Kafka Producer由一个缓冲空间池和一个后台I / O线程组成,该缓冲池容纳尚未传输到服务器的记录,该I / O线程负责将这些批处理记录转换为请求并将它们传输到集群。

例如,如果记录发送的速度快于记录传递到服务器的速度,则生产者将阻塞max.block.ms,此后它将引发异常。然后,客户端假定批处理失败,并将根据retries配置

重试发送批处理
org.apache.kafka.common.errors.TimeoutException: Expiring 1 record(s) for my-test-topic-4 due to 30024 ms has passed since batch creation plus linger time

假设retries配置设置为3,并且如果所有重试均失败,则该批次将丢失

error: Failed to send message after 3 tries

如果5分钟内无法联系到经纪人怎么办?

如果代理关闭,并且在同一时间如果重试已用尽,则您丢失了数据