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

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐