使用高级API从特定偏移量开始读取kafka消息

时间:2015-12-16 11:00:41

标签: apache-kafka

我希望我没有犯错,但我记得在Kafka文档中它提到使用高级API无法从特定偏移量开始读取消息,但有人提到它会改变。

现在是否可以使用高级API来读取特定分区和特定偏移量的消息?你能举个例子告诉我怎么做吗?

我正在使用kafka 0.8.1.1。

提前致谢。

2 个答案:

答案 0 :(得分:5)

你可以用kafka 0.9:

来做到这一点

http://kafka.apache.org/090/javadoc/org/apache/kafka/clients/consumer/KafkaConsumer.html

public void seek(TopicPartition partition, long offset)
  

覆盖消费者在下次轮询(超时)时将使用的提取偏移量。如果为此调用此API   同一个分区不止一次,将使用最新的偏移量   下一轮民意调查()。请注意,如果此API是任意的,您可能会丢失数据   在消费中使用,重置获取偏移量

答案 1 :(得分:2)

Kafka 0.8.1.1可以使用Zookeeper为每个消费者群体存储偏移量。如果您将消费者配置为向zookeeper提交偏移量而不是仅需要在zookeeper下为您的使用者组手动设置主题和分区的起始偏移量。 您需要连接到zookeeper并使用set命令:

set / consumers / [groupId] / offsets / [topic] / [partitionId] - >长(抵消)

E.g。为spark-app使用者组的topicname的分区0设置偏移量10。 set / consumers / spark-app / offsets / topicname / 0 10

当消费者开始消费来自Kafka的消息时,它总是开始消耗最后提交的偏移量。如果最后一次提交偏移量不是。因为任何原因而不是消费者应用逻辑,因为configurazione属性auto.offset.reset。

希望这有帮助。