代码之家  ›  专栏  ›  技术社区  ›  Rob

很难让简单的卡夫卡制作人继续

  •  1
  • Rob  · 技术社区  · 7 年前

    我在Mac Pro(Sierra;10.12.6)上本地运行Kafka只是为了开始开发。我启动了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
    

    我已经安装了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
    

    思想?感谢您的帮助。

    2 回复  |  直到 7 年前
        1
  •  1
  •   Soumen Mukherjee David F    7 年前

    请确保您在服务器中定义了设置。配置文件 advertised.listeners=PLAINTEXT://your.host.name:9092 .

    主机名解析可能会提供一些其他主机名,默认情况下Kafka使用 java.net.InetAddress.getCanonicalHostName()

        2
  •  0
  •   Gilad Sharaby    6 年前

    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