KafkaTimeoutError («Не удалось обновить метаданные через 60 секунд».) - PullRequest
0 голосов
/ 20 января 2019

Я пишу производителя Kafka, использующего Python 3.6, версия клиента 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.

Ответы [ 2 ]

0 голосов
/ 21 января 2019

Настройка рекламируемого конфига:

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

Измените ip внутренней сети NAT на ip публичной сети . Потому что производитель отправит сообщение на этот адрес. Продюсер только мог получить доступ к публике.

0 голосов
/ 21 января 2019

Есть ли брандмауэр для вашего dev-сервера и серверов kafka. Можете ли вы попробовать telnet mq-server 9092

...