如何始终使用kafka-streams中的最新偏移量

时间:2018-01-19 15:59:35

标签: apache-kafka apache-kafka-streams

我们的要求是,如果kafka-stream应用程序正在使用分区,它应该从该分区的最新偏移开始消耗。

这似乎可以使用

streamsConfiguration.put(ConsumerConfig.AUTO_OFFSET_RESET_CONFIG, "latest")

现在,假设使用上述配置,kafka-stream应用程序开始使用来自分区的最新偏移量的数据。一段时间后,应用程序崩溃了。当应用程序重新启动时,我们希望它使用该分区的最新偏移量的数据,而不是它最后读取的位置。

但是我找不到任何可以使用kafka-streams api来帮助实现它的东西。

P.S。我们正在使用kafka-1.0.0。

1 个答案:

答案 0 :(得分:2)

不支持开箱即用。

配置auto.offset.reset仅触发,如果没有已提交的偏移量,并且没有配置可以更改此行为。

您可以在启动前手动操纵偏移 使用bin/kafka-consumer-groups.sh虽然application.id是。{ group.id并且您可以在重新启动应用程序之前“寻求结束”。

<强>更新

自1.1.0发布以来,您可以使用bin/kafka-streams-application-reset.sh工具设置起始偏移量。要使用该工具,应用程序必须处于脱机状态。 (cf:https://cwiki.apache.org/confluence/display/KAFKA/KIP-171+-+Extend+Consumer+Group+Reset+Offset+for+Stream+Application