【问题标题】:KafkaTimeoutError('Failed to update metadata after 60.0 secs.')KafkaTimeoutError('60.0 秒后更新元数据失败。')
【发布时间】:2019-06-14 00:22:43
【问题描述】:

我正在使用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.

我正在google & baidu & yandex 搜索。

【问题讨论】:

  • 试试listeners=PLAINTEXT://:9092并验证mq-server10.142.0.2

标签: python apache-kafka kafka-python


【解决方案1】:

你的开发盒和 kafka 服务器有防火墙吗?你能试试 telnet mq-server 9092

【讨论】:

    【解决方案2】:

    调整广告配置:

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

    修改NAT内网ip为公网ip。因为生产者会向这个地址发送消息。生产者只能访问公众。

    【讨论】:

      猜你喜欢
      • 2018-06-23
      • 2020-09-23
      • 2021-08-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多