背景
项目中用到了kafka消息队列,在开发测试过程中发现了消息端设置的最大重试次数失效的情况,具体信息如下:
- consumer: 3
- partition:1
- maxRetryTimes:15
- spring-kafka: 2.2.15.RELEASE
- kafka-client: 2.0.1
相关代码
消费者config文件
@Configuration
@EnableKafka
@Slf4j
public class KafkaConsumerConfig {
@Bean
KafkaListenerContainerFactory<ConcurrentMessageListenerContainer<Integer, String>> demoContainerFactory() {
ConcurrentKafkaListenerContainerFactory<Integer, String>
factory = new ConcurrentKafkaListenerContainerFactory<>();
// 设置消费者工厂
factory.setConsumerFactory(demoContainerFactory());
// 消费者组中线程数量
factory.setConcurrency(3);
// 当使用批量监听器时需要设置为true
factory.setBatchListener(false);
// 拉取超时时间
factory.getContainerProperties().setPollTimeout(3000

本文介绍了在Spring Kafka项目中遇到消费者最大重试次数失效的问题,详细分析了问题的原因——反序列化错误导致的毒丸问题,并提供了官方推荐的解决方案——使用ErrorHandlingDeserializer来捕获并处理反序列化异常。通过配置ErrorHandlingDeserializer,可以避免消费者陷入无限重试循环,保证系统的稳定运行。
9647

被折叠的 条评论
为什么被折叠?



