Kafka python使用者在启动时读取所有消息

Kafka python使用者在启动时读取所有消息,python,apache-kafka,kafka-python,Python,Apache Kafka,Kafka Python,我正在使用下面的代码阅读某个主题的消息。我面临两个问题。 每当我启动consumer时,它都在读取队列中的所有消息? 如何仅读取未读邮件 from kafka import KafkaConsumer consumer = KafkaConsumer('my-topic', group_id='my-group', bootstrap_servers=['localhost:9092']) f

我正在使用下面的代码阅读某个主题的消息。我面临两个问题。 每当我启动consumer时,它都在读取队列中的所有消息? 如何仅读取未读邮件

from kafka import KafkaConsumer


consumer = KafkaConsumer('my-topic',
                         group_id='my-group',
                         bootstrap_servers=['localhost:9092'])
for message in consumer:
    consumer.commit() 
    # message value and key are raw bytes -- decode if necessary!
    # e.g., for unicode: `message.value.decode('utf-8')`
    print ("%s:%d:%d: key=%s value=%s" % (message.topic, message.partition,
                                          message.offset, message.key,
                                          message.value))

正如@Kenji所说,您必须使用
consumer.commit()
提交偏移量。如果您不想手动提交,可以通过将
enable\u auto\u commit=True
传递给您的
KafkaConsumer
来启用自动提交。您可能还需要调整
auto\u commit\u interval\u ms
,它是每次自动提交之间的毫秒间隔。请参见此处:。

我想您在阅读完后必须
consumer.commit()
。谢谢@KenjiNoguchi,我尝试了consumer.commit(),但仍然无法工作。任何提示谢谢@se7entyse7en我用consumer.commit()尝试过,但仍然不起作用。任何hints@user3570620,也许这有帮助: