7

尝试在 CentOS 上使用 Python 客户端本地连接到 Kafka 0.10.0.0 时,我遇到了一个非常奇怪的问题。

我的连接选项非常简单且默认:

kafka_consumer = kafka.KafkaConsumer(
        bootstrap_servers=['localhost:9092'],
        client_id="python-test-consumer"
    )

当我在 Kafka 的 server.properties 文件中手动设置listeners选项时,例如:

listeners=PLAINTEXT://localhost:9092

我得到了 kafka.errors.NoBrokersAvailable,尽管我仍然可以使用 curl 或其他 linux 东西轻松连接到 Kafka 代理服务器。

没有adverted.listeners或其他不推荐使用的广告选项有助于解决问题。因此,唯一有效的配置状态是没有侦听器的状态。这当然是不可接受的,因为我们需要以某种方式设置本地集群。

似乎这个愚蠢问题的解决方案很简单,并且正在思考,但我们自己无法弄清楚。

4

1 回答 1

4

这听起来可能很愚蠢,但同样的问题也因此发生在我身上:

我通过 brew(Mac 包管理器)升级到 Kafka 0.10.0.0。Brew 然后建议像这样运行:

$ zookeeper-server-start /usr/local/etc/kafka/zookeeper.properties; kafka-server-start /usr/local/etc/kafka/server.properties

而不是我之前的执行方式:

$ zkServer start
$ kafka-server-start /usr/local/etc/kafka/server.properties

建议的方法不断在客户端抛出那些“没有可用的代理”错误。然后我只是将命令分成两行:

$ zookeeper-server-start /usr/local/etc/kafka/zookeeper.properties
$ kafka-server-start /usr/local/etc/kafka/server.properties

一切都像以前一样工作!

抱歉,如果这对您不起作用,但我认为值得一提。

于 2016-08-04T13:28:21.623 回答