如何在Kafka中为消费者发送OffsetCommitRequest?

时间:2016-07-15 06:18:10

标签: java apache-kafka offset kafka-consumer-api

我正在尝试在Kafka使用者API中使用OffsetCommitRequest for 0.9,它包含在以下包中: org.apache.kafka.common.requests.OffsetCommitRequest

如何发送此请求?使用它的理想方法是什么? 我想在卡夫卡本身提出补偿。我没有找到任何与0.9版相关的文档。其中大部分可用于0.8.x

此外,此请求的构造函数还需要生成id,成员ID和保留时间。这些领域是什么?

1 个答案:

答案 0 :(得分:3)

如果您想手动提交偏移量,也许您应该设置消费者属性

enable.auto.commit=false

并使用kafka consumer的commitSync()或commitAsync()方法。 例如,您可以在处理完所有ConsumerRecords后调用commitSync()。 或者您甚至可以在每次收到ConsumerRecord之后提交您想要的TopicPartition。像这样:

Map<TopicPartition, OffsetAndMetadata> offsetMap = new HashMap<>();
offsetMap.put(new TopicPartition(someTopic, somePartition), new OffsetAndMetadata(someOffset));
kafkaConsumer.commitSync(offsetMap);