【问题标题】:KafkaConsumer to read topic from beginningKafkaConsumer 从头开始​​阅读主题
【发布时间】:2018-07-12 03:26:32
【问题描述】:

我想从主题开始消费。我已将属性“AUTO_OFFSET_RESET_CONFIG”设置为最早,但不知何故仍未从头开始读取。

如果我遗漏了什么,有什么想法吗?我每次都在创建一个新的消费者群体。

@Bean
public ConcurrentKafkaListenerContainerFactory<String, String> kafkaListenerContainerFactory() {
    ConcurrentKafkaListenerContainerFactory<String, String> factory
            = new ConcurrentKafkaListenerContainerFactory<>();
    factory.setConsumerFactory(consumerFactory());
    factory.setBatchListener(true);

    return factory;
}

@Bean
public ConsumerFactory<String, String> consumerFactory() {
    return new DefaultKafkaConsumerFactory<>(getConsumerConfigs(false));
}

private Map<String, Object> getConsumerConfigs(boolean isEmbedded) {
       Map<String, Object> props = new HashMap<>();
       props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, isEmbedded ? embeddedBootstrapServers : bootstrapServers);
       props.put(ConsumerConfig.GROUP_ID_CONFIG, consumerGroupId + "temp");
       props.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class);
       props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class);
       props.put(ConsumerConfig.MAX_POLL_RECORDS_CONFIG, maxPollRecords);
       props.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, "earliest");

       props.put(ConsumerConfig.SESSION_TIMEOUT_MS_CONFIG, sessionTimeoutMillis);
       props.put(ConsumerConfig.HEARTBEAT_INTERVAL_MS_CONFIG, heartbeatIntervalMillis);

       return props;
}

【问题讨论】:

标签: spring-kafka


【解决方案1】:

该属性仅适用于从未消费过的新消费者组。使用ConsumerSeekAware message listener,您可以为每个分配的主题/分区调用seekToBeginning

【讨论】:

  • 谢谢 Garry,我正在尝试实现 ConsumerSeekAware 接口,我使用的是 1.2.2 发行版,它只有 seek() 方法,这很好。不知何故,它没有在我的监听器上调用 seek() 方法。我正在使用 BatchListener。它适用于所有类型的听众吗?任何想法?因为,在 KafkaMessageListenerContainer 中,如果它只是 GenericListener,它会调用 if (this.genericListener instanceof ConsumerSeekAware) { ((ConsumerSeekAware) this.genericListener).registerSeekCallback(this); }
  • 应该可以;这是1.2.2之前的问题fixed here
猜你喜欢
  • 1970-01-01
  • 2017-03-14
  • 2018-09-24
  • 2011-02-26
  • 2019-05-02
  • 1970-01-01
  • 2017-12-18
  • 1970-01-01
  • 2015-08-10
相关资源
最近更新 更多