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

@RetryTopic配置对Spring Boot Kafka应用性能的影响排查

Kafka非阻塞错误处理引入后性能下降10%的问题

现有一款已上线的Spring Boot v2.6.7应用,功能为从Kafka消费数据、转换后存储至数据库。在本地测试环境(Docker部署Kafka,单分区单消费者)下,处理100K条Kafka记录的耗时约为10分钟,三次测试数据如下:

first run: 10 min 20 sec.
second run: 10 min 05 sec.
third run: 10 min 36 sec.

为引入非阻塞错误处理,仅新增以下3个Bean,未修改其他配置:

@Bean
public KafkaTemplate<String, String> retryProducerKafkaTemplate() {
    return new KafkaTemplate<>(producerFactory());
}

@Bean
public ProducerFactory<String, String> producerFactory() {
    Map<String, Object> props = new HashMap<>();

    props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, kafkaProperties.getConsumer().getBootstrapServers());
    props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
    props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class);
    props.put(CommonClientConfigs.SECURITY_PROTOCOL_CONFIG, kafkaProperties.getConsumer().getSecurity().getProtocol());

    return new DefaultKafkaProducerFactory<>(props);
}

@Bean
public RetryTopicConfiguration retryTopicConfiguration() {
    return RetryTopicConfigurationBuilder
            .newInstance()
            .maxAttempts(2)
            .retryTopicSuffix("-retry")
            .doNotAutoCreateRetryTopics()
            .dltSuffix("-dlt")
            .includeTopics(consumerTopics)
            .exponentialBackoff(1000, 2, 10000)
            .retryOn(List.of(DataAccessException.class))
            .dltHandlerMethod("eventsListener", "dlt")
            .create(retryProducerKafkaTemplate());
}

再次测试处理100K条记录,耗时变为约11分钟,三次测试数据如下:

first run: 11min 20sec
second run:11min 12sec
third run: 11min 30sec

添加Kafka非阻塞错误处理后性能下降约10%,对此感到诧异。请问:

  • 是否有其他开发者遇到类似情况?
  • 是否是配置存在疏漏?

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 06:42:17