在kafka-python中使用客户端消息

时间:2015-07-06 06:44:43

标签: python apache-kafka kafka-python

我是卡夫卡的新手。通过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))

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

1 个答案:

答案 0 :(得分:2)

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

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

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