【问题标题】:consuming message in client in kafka-python在 kafka-python 的客户端中消费消息
【发布时间】:2015-07-06 06:44:43
【问题描述】:

我是卡夫卡的新手。通过一些 kafka-python 在线教程的帮助,我编写了以下代码:

   from kafka import SimpleProducer, KafkaClient, KafkaConsumer
   kafka =  KafkaClient("localhost:9092")
   producer = SimpleProducer(kafka)
   producer.send_messages(b'my-topic', b'this method', b'Hello World')
   consumer = KafkaConsumer('my-topic',
                     group_id='my_group',
                     bootstrap_servers=['localhost:9092'])
   for message in consumer:
       print("%s:%d:%d: key=%s value=%s" % (message.topic, message.partition,
                                         message.offset, message.key,
                                         message.value))

但问题是,在最后一个 for 循环中,代码执行被卡住了,我无法弄清楚。

【问题讨论】:

  • 我想我找到了答案。似乎从 SimpleProducer 消费者消费消息必须是 SimpleConsumer 的实例,因为在进行该更改之后,代码似乎可以工作。如果我错了,请纠正。谢谢。

标签: python apache-kafka kafka-python


【解决方案1】:

您的原始代码是正确的。我运行您的代码。 KafkaConsumer 可用于消费消息。如果您打开另一个控制台,并运行相同的原始代码,您将看到输出。

http://kafka-python.readthedocs.org/en/latest/apidoc/kafka.consumer.html中,有很多Consumer类,如SimpleConsumer、KafkaConsumer、Consumer等。为什么你的代码卡在 for 循环中?因为您代码中的消费者默认设置为使用 new 消息。在这种情况下,producer.send_messages() 函数产生的消息不会被消费者消费。

顺便说一句,如果你使用 SimpleConsumer,你可以使用 seek() 来设置你想消费的消息的偏移量。

【讨论】:

    猜你喜欢
    • 2015-09-18
    • 1970-01-01
    • 2018-01-20
    • 1970-01-01
    • 2019-08-27
    • 2022-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多