# Kafka 重试机制

特别提示

本文基于 spring-kafka-2.5.14源码

在默认配置下,当消费异常会进行重试,重试多次后会跳过当前消息,继续进行后续消息的消费,不会一直卡在当前消息,保证了业务的正常进行。

# 默认会重试多少次?

默认配置下,消费异常会进行重试,重试次数是多少, 重试是否有时间间隔?

org.springframework.kafka.listener.SeekUtils

public final class SeekUtils {

    /**
     * The number of times a topic/partition/offset can fail before being rejected.
     */
    public static final int DEFAULT_MAX_FAILURES = 10;

    /**
     * The default back off - a {@link FixedBackOff} with 0 interval and
     * {@link #DEFAULT_MAX_FAILURES} - 1 retry attempts.
     */
    public static final FixedBackOff DEFAULT_BACK_OFF = new FixedBackOff(0, DEFAULT_MAX_FAILURES - 1);

    private static final LoggingCommitCallback LOGGING_COMMIT_CALLBACK = new LoggingCommitCallback();

    private SeekUtils() {
    }
    
    ...
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20

从源码看,Kafka消费者在默认配置下会进行最多10次的重试,每次重试的时间间隔为0,即立即进行重试。如果在10次重试后仍然无法成功消费消息,则不再进行重试,消息将被视为消费失败。 但当服务重启以后,会重新继续消费之前失败的消息,直至完成所有重试后为止

Last Updated: 6 months ago