【问题标题】:Python KafkaConsumer start consuming messages from a timestampPython KafkaConsumer 从时间戳开始消费消息
【发布时间】:2018-03-06 06:33:55
【问题描述】:

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

【问题讨论】:

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


    【解决方案1】:

    我猜你使用的是kafka-python (https://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

    希望这会有所帮助!

    【讨论】:

      【解决方案2】:

      我解决了它,但是我不确定使用该方法获得的值。 我有一个 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])

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2023-02-09
        • 2021-01-11
        • 2021-07-09
        • 2020-07-08
        • 2014-08-30
        • 2019-03-26
        相关资源
        最近更新 更多