我想使用Pyhon和Kafka客户端获取Kafka主题的已提交偏移量和结束偏移量(位置),
我想知道为什么主题+消费者组本身(KafkaAdminClient.list_consumer_group_offsets(consumer_group)
)收到了偏移
当消费者+主题的分区(KafkaConsumer.end_offsets(partitions)
)收到职位时。
有人知道吗?
答案 0 :(得分:0)
我不完全了解这个问题,但是两个调用都以相同的信息返回,但是潜在的分区数量不同。因此,两者都用于不同的场景。
使用list_consumer_group_offsets(group_id, group_coordinator_id=None, partitions=None)
,您还可以限制一组分区而不是全部分区的返回值。基本上,此调用没有上下文,因此需要将使用者组作为参数传递。
KafkaConsumer有一个消费群体和在构建时传递的主题。与其他调用的区别在于,此过滤器仅过滤特定消费者所消费的主题。
同样,两者都返回非常相似的数据,但是每个都在不同的情况下有用。
python文档非常清晰,但是您必须了解kafka是如何在内部工作的,因为它有点复杂。该API不会以任何方式明确说明如何使用kafka。
答案 1 :(得分:0)
committed
的概念仅在存在消费者组时出现。因此,您所要提交的偏移量恰恰意味着有一个消费者组。消费者组包含主题及其分区的详细信息。
但是,无论是否有消费者组,都使用end offsets
一词。这就是编写该函数以接受主题分区列表的原因。
有时可能不需要使用消费者组,但我们只想了解主题中的内容。在这种情况下,我们不会创建消费者组,我们只是将主题分配给消费者,然后阅读它们,就像我们使用kafka-console-consumer
一样。
例如,我们使用kafka-console-consumer
读取最近的 n 条消息或显示主题信息。