Spring Kafka-访问offsetsForTimes从特定偏移量开始消耗

时间:2018-11-07 15:23:31

标签: apache-kafka spring-kafka

我有一个相当简单的Kafka使用者:

MessageListener<String, T> messageListener = record -> {

    doStuff( record.value()));
  };

  startConsumer(messageListener);


protected void startConsumer(MessageListener<String, T> messageListener) {
ConcurrentMessageListenerContainer<String, T> container = new ConcurrentMessageListenerContainer<>(
    consumerFactory(this.brokerAddress, this.groupId),
    containerProperties(this.topic, messageListener));

   container.start();
}

我可以毫无问题地使用邮件。 现在,我需要根据对Kafka Consumer调用seek的结果,从特定偏移量offsetsForTimes

我了解我可以使用seek界面ConsumerSeekAware到某个位置:

@Override
public void onPartitionsAssigned(Map<TopicPartition, Long> assignments,
        ConsumerSeekCallback callback) {

      assignments.forEach((t, o) -> callback.seek(t.topic(), t.partition(), ?????));
}

现在的问题是,我无法访问回调中的Kafka Consumer,因此无法调用offsetsForTimes

还有其他方法可以实现吗?

1 个答案:

答案 0 :(得分:1)

使用ConsumerAwareRebalanceListener进行初始搜索(在2.0中引入)。

当前版本为2.2.0。

How to test a ConsumerAwareRebalanceListener?