赞
踩
Kafka配置max.poll.interval.ms参数
max.poll.interval.ms默认值是5分钟,如果需要加大时长就需要给这个参数重新赋值
这里解释下自己为什么要修改这个参数:因为第一次接收kafka数据,需要加载一堆基础数据,大概执行时间要8分钟,而5分钟后,kafka认为我没消费,又重新发送,导致我这边收到许多重复数据,所以我需要调大这个值,避免接收重复数据
大部分文章都是如下配置:
public static KafkaConsumer<String, String> createConsumer() {
Properties properties = new Properties();
properties.put(CommonClientConfigs.BOOTSTRAP_SERVERS_CONFIG, BOOTSTRAP_SERVER);
properties.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class);
properties.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class);
properties.put(ConsumerConfig.GROUP_ID_CONFIG, "group1");
properties.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, "earliest");
properties.put(ConsumerConfig.MAX_POLL_INTERVAL_MS_CONFIG, 10000);
return new KafkaConsumer<>(properties);
}
或是:
max.poll.interval.ms = 300000
但是我是需要在springboot的yml文件中配置,显然上面的方法都不满足我的需求,如果试过的小伙伴会发现spring.kafka.consumer下根本没有max-poll-interval-ms这个参数
spring:
kafka:
consumer:
max-poll-records: 500
如果需要在yml文件中配置,应该怎么写呢?查了几个小时的资料,总算是找到了
spring:
kafka:
consumer:
max-poll-records: 500
properties:
max:
poll:
interval:
ms: 600000
启动项目后,还是会有如下提示:
The configuration 'max.poll.interval.ms' was supplied but isn't a known config.
但是,打印出来的参数配置,已经显示生效了
而且经过自己测试,也没有再出现数据重复发送的情况
完美解决!~!
参考文章:
https://stackoverflow.com/questions/61648630/spring-kafka-overriding-max-poll-interval-ms
https://www.cnblogs.com/alexgl2008/articles/12392044.html
https://www.jianshu.com/p/f9ef9f058016
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。