Kafka客户端上有重试功能。我正在努力找出何时重试。如果与代理的连接短暂中断,是否会重试?如果5分钟内无法联系到经纪人,该怎么办?经纪人备份后,消息会被传递吗?还是仅在已知情况下对kafka客户端进行重试?
答案 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分钟内无法联系到经纪人怎么办?
如果代理关闭,并且在同一时间如果重试已用尽,则您丢失了数据