我不理解javadoc中kafkaconsumer position()和committed()方法之间的区别。
position:public long position(topicpartition)获取要获取的下一条记录的偏移量(如果存在具有该偏移量的记录)。
committed:获取给定分区的上一次提交的偏移量(不管提交是由这个进程还是另一个进程进行的)。在发生故障时,此偏移量将用作耗电元件的位置。此调用将阻止执行远程调用以从服务器获取最新提交的偏移量。
这是否意味着如果consumer.poll()从偏移量101到150获取50条消息,并且consumer有手动偏移量提交。消费者仍在处理这50条消息,所以最后提交的偏移量是100。现在committed()将返回100,但position将返回151(因为。已获取消息101到150)?
1条答案
按热度按时间ugmeyewa1#
是的,没错。
当您
poll()
或者seek()
并对应于消费者收到的最新消息偏移量。提交位置是指客户端在提交调用中使用的最新偏移量(手动或自动)。
例如,您可以让消费者禁用自动提交功能,并且从不手动调用提交。在这种情况下,提交的位置将永远不会更改,而位置将在客户端接收消息时更新。