如何使用 Kafka Console Consumer 在两个时间戳之间使用消息

8 apache-kafka kafka-consumer-api

是否可以在 Kafka 控制台消费者中检索特定时间戳范围的消息?

例如,昨天 08:00 到 09:00 之间的 kafka 消息。

Gio*_*ous 8

您可以使用kafkacat两个时间戳之间的消息:

kafkacat -b localhost:9092 -C -t mytopic -o s@1568276612443 -o e@1568276617901
Run Code Online (Sandbox Code Playgroud)

在哪里

  • s@ 表示以毫秒为单位的起始时间戳
  • e@ 表示以毫秒为单位的结束时间戳(不包括在内)


Ofe*_*Hod 3

是的,从Kafka 版本 0.10.1开始你就可以做到这一点。使用KafkaConsumer中的
函数: offsetsForTimes

按时间戳查找给定分区的偏移量。每个分区返回的偏移量是相应分区中时间戳大于或等于给定时间戳的最早偏移量。这是一个阻塞调用。不必为使用者分配分区。

  • 您可以使用“KafkaConsumer”api来检索相关偏移量,然后在“kafka-console-consumer”中使用“--offset myoffset”,我认为除了使用“--property print”之外,没有其他解决方案。 `kafka-console-consumer` 中的 timestamp=true` 并使用 `grep` 过滤每条消息的打印时间,以适合您的范围。如果这对您来说是一个好的方向,我可以写得更详细。 (2认同)