如何获取Kafka主题中最后一条已消费消息的偏移量?
关于Kafka已消费消息偏移量的确认问题
场景说明
- 向主题A发送6条消息
- 接入消费者消费所有消息后断开连接,通过KafkaJS的
fetchTopicOffsets查询得到:offset=6,high=6,low=0 - 再次向主题A发送6条消息,接入新消费者时,该消费者会从偏移量6开始消费;此时用
fetchTopicOffsets查询得到:offset=12,high=12,low=0
核心问题
是否可以确定该Kafka主题中最后一条已消费消息的偏移量?
结论与分析
可以确定,此场景下最后一条已消费消息的偏移量为5。
原因在于:KafkaJS中fetchTopicOffsets返回的offset代表的是下一条待消费消息的偏移量,而非最后一条已消费消息的偏移量。第一个消费者消费了偏移量0、1、2、3、4、5的6条消息,消费完成后,下一条待消费的偏移量就是6,这和查询结果一致;当新增6条消息后,新消费者从6开始消费,消费完成后下一条待消费偏移量变为12,同样符合查询结果。因此用fetchTopicOffsets返回的offset值减1,就能得到最后一条已消费消息的偏移量。
内容的提问来源于stack exchange,提问作者William Jiang
相关产品推荐
相关产品推荐

