Rob
Rob

Reputation: 13

Trouble getting simple Kafka producer going

I'm running Kafka locally on my Mac Pro (Sierra; 10.12.6) just to get started with development. I've started ZooKeeper and a Kafka server (0.11.0.1):

bin/zookeeper-server-start.sh config/zookeeper.properties
bin/kafka-server-start.sh config/server.properties

I've got topics created:

bin/kafka-topics.sh --list --zookeeper localhost:2181
__consumer_offsets
access
my-topic

(not sure what __consumer_offsets is, I created the other two).

I've installed kafka-python (1.3.4). My sample program is dead simple:

from kafka import KafkaProducer

producer = KafkaProducer(bootstrap_servers=['localhost:9092'])
producer.send('my-topic', 'Another message')

But it croaks with the following 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

Ideas? Any assistance appreciated.

Upvotes: 1

Views: 1503

Answers (2)

Gilad Sharaby
Gilad Sharaby

Reputation: 998

If you're using wurstmeister/kafka, please notice that in Kafka's last version many parameters have been deprecated. Instead of using -

KAFKA_HOST: KAFKA_PORT: 9092 KAFKA_ADVERTISED_HOST_NAME: <IP-ADDRESS> KAFKA_ADVERTISED_PORT: 9092

you need to use - KAFKA_LISTENERS: PLAINTEXT://:9092 KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://<IP-ADDRESS>:9092

view this link for more details

Upvotes: 0

Soumen Mukherjee
Soumen Mukherjee

Reputation: 3272

Please insure that you have the setting defined in the server.config file advertised.listeners=PLAINTEXT://your.host.name:9092 .

It might be possible that the host name resolution is giving some other host name , by default Kafka uses java.net.InetAddress.getCanonicalHostName()

Upvotes: 1

Related Questions