【发布时间】:2016-05-15 01:03:03
【问题描述】:
我在使用 KafaConsumer 使其从头开始读取或从任何其他显式偏移量读取时遇到问题。
为同一主题的消费者运行命令行工具,我确实看到带有--from-beginning 选项的消息,否则它会挂起
$ ./kafka-console-consumer.sh --zookeeper {localhost:port} --topic {topic_name} --from-beginning
如果我通过 python 运行它,它会挂起,我怀疑这是由不正确的消费者配置引起的
consumer = KafkaConsumer(topic_name,
bootstrap_servers=['localhost:9092'],
group_id=None,
auto_commit_enable=False,
auto_offset_reset='smallest')
print "Consuming messages from the given topic"
for message in consumer:
print "Message", message
if message is not None:
print message.offset, message.value
print "Quit"
输出:
使用来自给定主题的消息 (之后挂起)
我使用的是 kafka-python 0.9.5,代理运行的是 kafka 8.2。不确定确切的问题是什么。
按照 dpkp 的建议设置 _group_id=None_ 以模拟控制台使用者的行为。
【问题讨论】:
-
我最近下载了 kafka 包并尝试了你的代码,它对我有用。你能显示你的
consumer.properties内容文件吗? -
stackoverflow.com/questions/34684410/… 你可能需要设置起始偏移量...
-
也试过设置起始偏移量,也没有用。
-
我正在使用具有多个分区的主题对其进行测试,碰巧只有当生产者没有产生足够的消息以致所有分区中至少有一条消息时才会出现问题。 issues.apache.org/jira/browse/KAFKA-3159 如果所有分区都至少有一条消息,则消费者可以正常工作。
-
此外,KafkaConsumer 不会为不支持的编解码器抛出异常,因为我使用的是消费者尚不支持的 lz4,因此它没有解码消息也没有抛出异常。
标签: python apache-kafka kafka-consumer-api kafka-python