Python KafkaConsumer开始使用来自时间戳的消息

时间:2017-09-25 10:11:16

标签: python-3.x apache-kafka kafka-consumer-api kafka-python

我打算跳过主题的开头,只读取从某个时间戳到结尾的消息。关于如何实现这一目标的任何提示?

2 个答案:

答案 0 :(得分:3)

我猜你正在使用kafka-pythonhttps://github.com/dpkp/kafka-python),如你所提到的那样" KafkaConsumer"。

您可以使用offsets_for_times()方法检索与时间戳匹配的偏移量。 https://kafka-python.readthedocs.io/en/master/apidoc/KafkaConsumer.html#kafka.KafkaConsumer.offsets_for_times

然后使用seek()寻找该偏移量。 https://kafka-python.readthedocs.io/en/master/apidoc/KafkaConsumer.html#kafka.KafkaConsumer.seek

希望这有帮助!

答案 1 :(得分:0)

我解决了这个问题,但是我不确定使用该方法得到的值。 我有一个KafkaConsumer(ck),我使用assignment()方法获得了主题的分区。因此,我可以创建一个字典,其中包含我感兴趣的主题和时间戳(在本例中为100)。

旁边问题: 我应该使用0来获取所有消息吗?

我可以使用该字典作为offsets_for_times()中的参数。但是,我得到的值都是None

zz = dict(zip(ck.assignment(), [100]*ck.assignment() ))
z = ck.offsets_for_times(zz)
z.values()

dict_values([None, None, None])