我向卡夫卡转发了一些活动并启动了我的卡夫卡流程序。我的程序开始处理事件并完成。过了一段时间,我停止了我的Kafka流应用程序,然后我再次开始。观察到My Kafka流程序正在处理已处理的先前事件。
根据我的理解,Kafka流在内部维护每个应用程序ID的输入主题本身的偏移量。但是这里重新处理已处理的事件。
如何验证Kafka流处理完成的偏移量? Kafka流如何持久保存这些书签?在什么基础上&从哪个Kafka偏移,Kafka流将开始阅读Kafka的事件?
如果Kafka steam抛出异常,那么它是否重新处理已处理的事件?
请澄清我的疑虑。
请帮助我站起来。
答案 0 :(得分:1)
Kafka Streams内部使用KafkaConsumer
,所有正在运行的实例使用application.id
作为group.id
形成一个使用者群组。偏移量定期(可配置)提交给Kafka群集。因此,在使用相同的application.id
Kafka Streams重新启动时,应该获取最新提交的偏移并从那里继续处理。
您可以使用bin/kafka-consumer-groups.sh
工具检查已提交的偏移量,以及其他任何使用者组。