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

kafkatimeooterrror('60.0秒后更新元数据失败。')

  •  1
  • Dolphin  · 技术社区  · 6 年前

    我正在使用python 3.6编写一个kafka生产者,python kafka客户端版本是1.4.4_畗kafka版本是:2.1.0&1.1.1(尝试两个版本),但当我向生产者编写消息时,抛出此错误:

    KafkaTimeoutError('Failed to update metadata after 60.0 secs.')
    

    这是我的客户代码:

    producer = KafkaProducer(
      bootstrap_servers=['mq-server:9092'],
      api_version = (0,10,2,0) # solve no broker error
    )
    
    producer.send("dolphin-test".encode('utf-8'),b"test")
    

    这是我修改的服务器配置:

    listeners=PLAINTEXT://10.142.0.2:9092
    advertised.listeners=PLAINTEXT://10.142.0.2:9092
    

    当使用脚本生成和使用消息时,它工作正常!这是客户端跟踪输出:

    D:\project\souce\pydolphin-service>D:/Programs/Python/Python37/python.exe d:/project/souce/pydolphin-service/dolphin/producer.py
    Traceback (most recent call last):
      File "d:/project/souce/pydolphin-service/dolphin/producer.py", line 14, in <module>
        future = producer.send('my-topic', b'raw_bytes')
      File "D:\Programs\Python\Python37\lib\site-packages\kafka\producer\kafka.py", line 555, in send
        self._wait_on_metadata(topic, self.config['max_block_ms'] / 1000.0)
      File "D:\Programs\Python\Python37\lib\site-packages\kafka\producer\kafka.py", line 682, in _wait_on_metadata
        "Failed to update metadata after %.1f secs." % (max_wait,))
    kafka.errors.KafkaTimeoutError: KafkaTimeoutError: Failed to update metadata after 60.0 secs.
    

    我正在谷歌和百度搜索。

    2 回复  |  直到 6 年前
        1
  •  2
  •   rookie    6 年前

    是否有防火墙b/w您的dev box和kafka服务器。您能试试telnet mq server 9092吗?

        2
  •  0
  •   Dolphin    6 年前

    调整公布的配置:

    advertised.listeners=PLAINTEXT://external-ip:9092
    

    将NAT内部网络IP修改为 公网IP . 因为生产者会把消息发送到这个地址。生产者只能向公众开放。