不接收融合kafka简单生产者/消费者示例的消息?

时间:2017-01-27 21:14:12

标签: python apache-kafka apache-zookeeper confluent-kafka

我使用kafka_2.11-0.10.1.1(主分支)python绑定运行confluent-kafka-0.9.2,使用librdkafka-0.9.2。我的机器运行ubuntu-16.04 x86_64。我在端口zookeeper-3.4.8-1上运行2181。我运行汇合的生产者示例,如下所示:

$ cd confluent-kafka-python/examples
$ python producer.py localhost:9095 confluent-01
first message
2nd msg

消费者

$ python consumer.py localhost:9095 confluentgroup confluent-01

所有东西都在我的机器上本地运行,它不会运行任何防火墙。

说明

  • 在Zookeeper上成功创建了主题
  • 代理成功收到生产者消息:
  • 消费者设置以下conf {'bootstrap.servers': broker, 'group.id': group, 'session.timeout.ms': 6000, 'default.topic.config': {'auto.offset.reset': 'smallest'}, 'api.version.request': True }
  • 在开头producer/consumer工作正常一段时间,直到我在生产者方面获得Receive failed: Disconnected。 Exerpt:
$ python producer.py  localhost:9095 confluent-02
asd
% Message delivered to confluent-02 [0]
1234123
890890
% Message delivered to confluent-02 [0]
%3|1485791262.420|FAIL|rdkafka#producer-1| [thrd:obscura.ax.example.com:9095/3]: obscura.ax.example.com:9095/3: Receive failed: Disconnected

问题:过了一段时间我没有在消费者方面得到任何东西

问题:

  1. 我做错了什么?
  2. 如何验证代理端收到生产者消息? 生成器消息在代理端正确接收。
  3. 如何调试消费者方? 我向消费者conf添加了'debug': "cgrp, topic, fetch"。我在哪里可以阅读日志?

2 个答案:

答案 0 :(得分:1)

我有两点建议:

1)尝试将选项--from-beginning添加到使用者命令

2)代理的默认端口是9092,因此请检查正确的端口以使用

希望这有帮助。

答案 1 :(得分:1)

我最终使事情发挥作用。最初我运行confluent-kafka tutorial,其中:

  • 不会捕获ctrl+c SIGINT信号,
  • poll()
  • 期间没有超时
消费者代码中的

。因此,我必须在我的linux机器上ctrl+z然后kill %1。我相信这个终止并没有关闭套接字,套接字保持打开一段时间(TIME_WAIT)。然后,当我重新启动消费者时,它从旧插座中取出垃圾并卡住了。

我添加了try: [...] except KeyboardInterrupt: consumer.close()以捕获ctrl+c并关闭套接字清除。而且不再面临这个问题。

我希望这将有助于将来。