Kafka消息失败后无限消费现象的排查
2022/2/24 23:23:00
本文主要是介绍Kafka消息失败后无限消费现象的排查,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
文章目录
- 背景
- 相关代码
- Reference
背景
项目中用到了kafka消息队列,在开发测试过程中发现了消息端设置的最大重试次数失效的情况,具体信息如下:
- consumer: 3
- partition:1
- maxRetryTimes:15
- spring-kafka: 2.2.3.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); // 最大重试次数3次 SeekToCurrentErrorHandler seekToCurrentErrorHandler = new SeekToCurrentErrorHandler((consumerRecord, e) -> { log.error("消费消息异常.抛弃这个消息,{}", consumerRecord.toString(), e); }, 3); factory.setErrorHandler(seekToCurrentErrorHandler); return factory; }
消费者业务代码
@Component @Slf4j public class DemoSingleConsumer { @Autowired private DemoHandler demoHandler; /** * 监听 topic 进行单条消费 */ @KafkaListener(topics = {KafkaConstants.TOPIC}, groupId = KafkaConstants.GROUPID, containerFactory = "demoContainerFactory", errorHandler = "listenErrorHandler") public void kafkaListener(ConsumerRecord<String, String> message) { log.info("消费消息开始 msg={}", JSONUtil.toJSONString(message.value())); SendMessage message = JSONUtil.parseObject(message.value(), ASendMessage.class); try { demoHandler.process(message); } catch (Throwable e) { log.error("消息消费异常,messageBody={}", JSONObject.toJSONString(message.value()), e); } }
Reference
1.kafkatemplate无法注入_kafka消费无限重试问题排查
2.kafka专题:kafka的消息丢失、重复消费、消息积压等线上问题汇总及优化
3.Kafka常见的导致重复消费原因和解决方案
这篇关于Kafka消息失败后无限消费现象的排查的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-12-21MQ-2烟雾传感器详解
- 2024-12-09Kafka消息丢失资料:新手入门指南
- 2024-12-07Kafka消息队列入门:轻松掌握Kafka消息队列
- 2024-12-07Kafka消息队列入门:轻松掌握消息队列基础知识
- 2024-12-07Kafka重复消费入门:轻松掌握Kafka消费的注意事项与实践
- 2024-12-07Kafka重复消费入门教程
- 2024-12-07RabbitMQ入门详解:新手必看的简单教程
- 2024-12-07RabbitMQ入门:新手必读教程
- 2024-12-06Kafka解耦学习入门教程
- 2024-12-06Kafka入门教程:快速上手指南