【问题标题】:Reading messages for specific timestamp in kafka在kafka中读取特定时间戳的消息
【发布时间】:2019-03-11 18:09:11
【问题描述】:

我想从kafka中的特定时间开始阅读所有消息。 假设我想阅读 0600 到 0800 之间的所有消息

Request messages between two timestamps from Kafka 建议使用 offsetsForTimes 解决方案。

该解决方案的问题是: 如果说我的消费者每天在 1300 开启。消费者那天不会读取任何消息,这实际上意味着在 0600 或之后没有提交任何偏移量,这意味着 offsetsForTimes( , ) 将返回 null。

有什么方法可以读取在某个时间发布到 kafka 队列的消息,而不管偏移量如何?

【问题讨论】:

  • 您的问题不清楚,无论何时启动消费者,它都会根据您询问的时间戳返回记录。
  • 我猜这个混淆是因为“offset”这个名字。由于 kafka 文档通常将单词偏移量称为消费者偏移量(消费者上次读取的消息)

标签: apache-kafka kafka-consumer-api


【解决方案1】:

offsetsForTimes() 返回在请求时间内生成的消息的偏移量。无论是否提交了偏移量,它都可以工作,因为偏移量是直接从分区日志中获取的。

所以是的,您应该使用此方法查找 0600 之后产生的第一个偏移量,寻找该位置并使用消息,直到您到达 0800。

【讨论】:

  • 我的 offsetsForTimes 方法只返回很少的部分偏移位置,尽管我可以看到所有分配的部分..你有什么想法吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-12-21
  • 2019-07-06
  • 2020-11-18
  • 2017-03-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多