You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kafka死信主题默认保留时间及Spring Kafka配置咨询

关于Spring Kafka重试/死信主题保留时间的问题解答

一、重试主题与死信主题的默认保留时间

Kafka集群全局默认的主题消息保留时间为7天(604800000毫秒),由集群配置retention.ms控制。你手动创建的-retry-0、-retry-1、-dlt主题,若未单独指定retention.ms参数,会直接继承这个全局默认值。

二、Spring中配置死信主题保留时间的方式

Spring Kafka的@RetryableTopic注解本身没有直接配置主题参数的属性,但可以通过以下两种方式实现:

1. 通过NewTopic Bean预创建主题并配置保留时间

在Spring配置类中定义NewTopic类型的Bean,明确指定死信(及重试)主题的名称和保留时间参数,示例代码如下:

@Configuration
public class KafkaTopicConfig {

    @Value("${kafka.consumer.topic.name}")
    private String mainTopic;

    @Value("${kafka.dlt.retention.ms}")
    private String dltRetentionMs;

    // 配置死信主题
    @Bean
    public NewTopic dltTopic() {
        return TopicBuilder.name(mainTopic + "-dlt")
                .config(TopicConfig.RETENTION_MS_CONFIG, dltRetentionMs)
                .partitions(3)
                .replicas(1)
                .build();
    }

    // 配置重试主题(示例)
    @Bean
    public NewTopic retry0Topic() {
        return TopicBuilder.name(mainTopic + "-retry-0")
                .config(TopicConfig.RETENTION_MS_CONFIG, "86400000") // 1天
                .partitions(3)
                .replicas(1)
                .build();
    }
}

这种方式完全适配Spring环境,配置参数可从配置文件读取,无需手动执行命令创建主题。

2. 手动创建主题时指定保留时间

若使用命令行手动创建主题,可直接在kafka-topics.sh命令中添加--config retention.ms=xxx参数,示例:

kafka-topics.sh --create --topic your-topic-dlt --bootstrap-server localhost:9092 \
  --partitions 3 --replication-factor 1 \
  --config retention.ms=259200000 # 3天

你也可以将保留时间值配置在Spring配置文件中,再通过脚本读取该值执行创建命令,实现配置统一管理。

内容的提问来源于stack exchange,提问作者Dushan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 23:54:31