【发布时间】:2018-05-12 15:07:20
【问题描述】:
我不理解 javadoc 中的 KafkaConsumer position() 和 commit() 方法之间的区别。
位置: 公开多头(TopicPartition分区) 获取将要获取的下一条记录的偏移量(如果存在具有该偏移量的记录)。
承诺: 获取给定分区的最后提交偏移量(无论提交是由该进程还是其他进程发生的)。如果发生故障,此偏移量将用作消费者的位置。 此调用将阻止执行远程调用以从服务器获取最新提交的偏移量。
这是否意味着如果一个 consumer.poll() 获取了假设从偏移 101 到 150 的 50 条消息,并且消费者有手动偏移提交。消费者仍在处理这 50 条消息,所以最后提交的偏移量是 100。现在,committed() 将返回 100,但位置将返回 151(因为已经获取了 101 到 150 的消息)?
【问题讨论】:
-
是的,我想是的。
标签: apache-kafka kafka-consumer-api