代码:
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)的
感谢。
答案 0 :(得分:2)
group_id(str或None) - 要为动态分区分配(如果已启用)而加入的使用者组的名称,以及用于获取和提交偏移的名称。如果为None,则禁用自动分区分配(通过组协调器)和偏移提交。
我上面的代码,组ID是None
。我更改了它并给出了一个组名,并且正在承诺抵消。