【问题标题】:understanding Kafka end offset and committed offset了解 Kafka 结束偏移量和已提交偏移量
【发布时间】:2020-06-07 09:13:45
【问题描述】:

我想使用 Pyhon 和 Kafka 客户端获取 Kafka 主题的提交偏移量和结束偏移量(位置),

我想知道为什么主题+消费者组本身会收到偏移量(KafkaAdminClient.list_consumer_group_offsets(consumer_group)

当位置被消费者+主题的分区(KafkaConsumer.end_offsets(partitions))接收时。

有人知道吗?

【问题讨论】:

    标签: python apache-kafka offset


    【解决方案1】:

    我不完全理解这个问题,但是这两个调用都以相同的方式返回相同的信息,但是对于潜在的不同数量的分区。所以两者都用于不同的场景。

    使用list_consumer_group_offsets(group_id, group_coordinator_id=None, partitions=None),您还可以限制一组分区而不是所有分区的返回。基本上这个调用没有上下文,所以需要将消费者组作为参数传递。

    KafkaConsumer 有一个消费者组和主题,它们在构造上传递。与其他调用的不同之处在于,此过滤器仅过滤特定消费者正在消费的主题。

    同样,两者都返回非常相似的数据,但每个在不同的场景中都有用。

    python 文档很清楚,但您必须了解 kafka 内部的工作原理,因为它有点复杂。 API 不会以任何方式明确说明如何使用 kafka。

    【讨论】:

      【解决方案2】:

      committed 的概念只有在有一个消费者群体时才会出现。因此,您要求提交的偏移量的这一点意味着存在一个消费者组。消费者组包含主题及其分区的详细信息。

      但是,end offsets 这个词不管有没有消费者组都使用。这就是为什么要编写函数来接受主题分区列表的原因。


      有时可能不需要使用消费者组,但我们只想看看主题中的内容。在这种情况下,我们不创建消费者组,我们只是将主题分配给消费者并阅读它们,就像我们使用 kafka-console-consumer 一样。

      例如,我们使用kafka-console-consumer 来读取最后的n条消息或显示主题信息。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-06-08
        • 2021-02-22
        • 2021-11-14
        • 2017-06-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多