Python:Kafka消费者偏移提交在后台

时间:2017-10-05 08:12:42

标签: python apache-kafka

代码:

from kafka import KafkaConsumer

task_event = TaskEvent()

consumer = KafkaConsumer('test',bootstrap_servers=["localhost:9092"],group_id=None, auto_offset_reset='smallest')
for msg in consumer:
    print msg.offset

输出

0 
1
2 
.
.
16

主题test中共有16条消息。

What determines Kafka consumer offset? - 根据接受的答案,您在消费者群组1中有一个消费者,消费了5条消息并且已经死亡。下次启动此消费者时,它甚至不会使用该auto.offset.reset配置,并将从它死亡的地方继续,因为它只是从偏移存储中获取存储的偏移量

根据Python API文档 - http://kafka-python.readthedocs.io/en/master/apidoc/KafkaConsumer.html enable_auto_commit默认为True,这意味着消费者的偏移量应在后台提交。但是,当我停止并多次运行上面的操作时,如果auto_commit默认为True,我将得到相同的输出(假设规则对于任何API都相同,可能是Java或Python)的

感谢。

1 个答案:

答案 0 :(得分:2)

根据documentation

  

group_id(str或None) - 要为动态分区分配(如果已启用)而加入的使用者组的名称,以及用于获取和提交偏移的名称。如果为None,则禁用自动分区分配(通过组协调器)和偏移提交。

我上面的代码,组ID是None。我更改了它并给出了一个组名,并且正在承诺抵消。