【发布时间】:2021-12-08 13:48:20
【问题描述】:
我有一个要求。我们有一个从 kafka 主题读取的 spring boot kafka 消费者应用程序。我们的要求是每当应用程序出现故障并出现时,我都想从最新的偏移量开始,而不是被旧值所困扰。是否有可能重置组的偏移量?我进行了一些研究,并使用 AbstractConsumerSeekAware 使用 seekToEnd() 将偏移设置到末尾,如下面的代码所示。
public class KafkaConsumer extends AbstractConsumerSeekAware {
@Autowired
private KafkaTemplate<String, String> kafkaTemplate;
@KafkaListener(topics = "${topic.consumer}")
public void consume(ConsumerRecord<?, ?> consumerRecord, Acknowledgment ack) {
//consuming the message from consumer Record.
seekToEnd();
doSomething();
ack.acknowledge();
}
但是,当我们停止应用并重新启动它时,它会从上次离开的偏移量开始读取,但我们只想从应用启动时的偏移量读取。我们怎样才能做到这一点?
【问题讨论】:
标签: spring-boot apache-kafka spring-kafka spring-cloud-stream