我希望我没有犯错,但我记得在Kafka文档中它提到使用高级API无法从特定偏移量开始读取消息,但有人提到它会改变。
现在是否可以使用高级API来读取特定分区和特定偏移量的消息?你能举个例子告诉我怎么做吗?
我正在使用kafka 0.8.1.1。
提前致谢。
答案 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。
希望这有帮助。