我有一个相当简单的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
。
还有其他方法可以实现吗?
答案 0 :(得分:1)
使用ConsumerAwareRebalanceListener
进行初始搜索(在2.0中引入)。
当前版本为2.2.0。