让简单的 Kafka 生产者无法运行
Trouble getting simple Kafka producer going
我 运行 Kafka 在我的 Mac Pro(Sierra;10.12.6)本地,只是为了开始开发。我启动了 ZooKeeper 和 Kafka 服务器 (0.11.0.1):
bin/zookeeper-server-start.sh config/zookeeper.properties
bin/kafka-server-start.sh config/server.properties
我创建了主题:
bin/kafka-topics.sh --list --zookeeper localhost:2181
__consumer_offsets
access
my-topic
(不确定 __consumer_offsets 是什么,我创建了另外两个)。
我已经安装了 kafka-python (1.3.4)。
我的示例程序非常简单:
from kafka import KafkaProducer
producer = KafkaProducer(bootstrap_servers=['localhost:9092'])
producer.send('my-topic', 'Another message')
但它发出以下消息:
Traceback (most recent call last):
File "produce.py", line 3, in <module>
producer = KafkaProducer(bootstrap_servers=['localhost:9092'])
File "/Library/Python/2.7/site-packages/kafka/producer/kafka.py", line 347, in __init__
**self.config)
File "/Library/Python/2.7/site-packages/kafka/client_async.py", line 220, in __init__
self.config['api_version'] = self.check_version(timeout=check_timeout)
File "/Library/Python/2.7/site-packages/kafka/client_async.py", line 861, in check_version
raise Errors.NoBrokersAvailable()
kafka.errors.NoBrokersAvailable: NoBrokersAvailable
想法?感谢任何帮助。
请确保您在 server.config 文件中定义了设置
advertised.listeners=PLAINTEXT://your.host.name:9092
.
可能是主机名解析给出了一些其他主机名,默认情况下 Kafka 使用 java.net.InetAddress.getCanonicalHostName()
如果您使用的是 wurstmeister/kafka,请注意,在 Kafka 的最新版本中,许多参数已被弃用。
而不是使用 -
KAFKA_HOST:
KAFKA_PORT: 9092
KAFKA_ADVERTISED_HOST_NAME: <IP-ADDRESS>
KAFKA_ADVERTISED_PORT: 9092
你需要使用 -
KAFKA_LISTENERS: PLAINTEXT://:9092
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://<IP-ADDRESS>:9092
查看this link了解更多详情
我 运行 Kafka 在我的 Mac Pro(Sierra;10.12.6)本地,只是为了开始开发。我启动了 ZooKeeper 和 Kafka 服务器 (0.11.0.1):
bin/zookeeper-server-start.sh config/zookeeper.properties
bin/kafka-server-start.sh config/server.properties
我创建了主题:
bin/kafka-topics.sh --list --zookeeper localhost:2181
__consumer_offsets
access
my-topic
(不确定 __consumer_offsets 是什么,我创建了另外两个)。
我已经安装了 kafka-python (1.3.4)。 我的示例程序非常简单:
from kafka import KafkaProducer
producer = KafkaProducer(bootstrap_servers=['localhost:9092'])
producer.send('my-topic', 'Another message')
但它发出以下消息:
Traceback (most recent call last):
File "produce.py", line 3, in <module>
producer = KafkaProducer(bootstrap_servers=['localhost:9092'])
File "/Library/Python/2.7/site-packages/kafka/producer/kafka.py", line 347, in __init__
**self.config)
File "/Library/Python/2.7/site-packages/kafka/client_async.py", line 220, in __init__
self.config['api_version'] = self.check_version(timeout=check_timeout)
File "/Library/Python/2.7/site-packages/kafka/client_async.py", line 861, in check_version
raise Errors.NoBrokersAvailable()
kafka.errors.NoBrokersAvailable: NoBrokersAvailable
想法?感谢任何帮助。
请确保您在 server.config 文件中定义了设置
advertised.listeners=PLAINTEXT://your.host.name:9092
.
可能是主机名解析给出了一些其他主机名,默认情况下 Kafka 使用 java.net.InetAddress.getCanonicalHostName()
如果您使用的是 wurstmeister/kafka,请注意,在 Kafka 的最新版本中,许多参数已被弃用。 而不是使用 -
KAFKA_HOST:
KAFKA_PORT: 9092
KAFKA_ADVERTISED_HOST_NAME: <IP-ADDRESS>
KAFKA_ADVERTISED_PORT: 9092
你需要使用 -
KAFKA_LISTENERS: PLAINTEXT://:9092
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://<IP-ADDRESS>:9092
查看this link了解更多详情