Я получаю сообщение от клиента с python, но на сервере с python нет сообщений? - PullRequest
0 голосов
/ 24 апреля 2020

когда я пишу этот код и запускаю его на своем рабочем столе, он работает.

from kafka import KafkaConsumer

consumer = KafkaConsumer('ersin_test',
                         group_id='eg61-group',
                         auto_offset_reset='earliest',
                         enable_auto_commit=False,
                         consumer_timeout_ms=10000,
                         bootstrap_servers=['10.1.2.3:9092'])

for message in consumer:
    print(message)

, но когда я перемещаю этот код на другую машину (сервер), он не получает никаких сообщений от kafka. Я запускаю этот код так: python my_script.py

мой сервер имеет сервер connect kafka:

telnet 10.1.2.3 9092


Trying 10.1.2.3...
Connected to 10.1.2.3.
Escape character is '^]'.

когда я запускаю этот код на сервере, он работает и получает topi c -имя из кафки

import kafka
consumer = kafka.KafkaConsumer(group_id='eg61-group',bootstrap_servers=['10.1.2.3:9092'])
t=consumer.topics()
print(t)

{'ersin_test', 'second-topic', 'abc', 'ESB', 'first-topic', 'ersin-topic'}

Так в чем же проблема, которую я не могу понять.

как мне решить эту проблему?

заранее спасибо.

1 Ответ

2 голосов
/ 28 апреля 2020

Для брокера advertised.listeners установлено значение myname, но это имя хоста DNS невозможно разрешить с вашего клиентского компьютера. Это означает, что, хотя первоначальное bootstrap соединение с IP-адресом успешно, брокер возвращает myname в качестве имени хоста, на котором клиент должен выдавать запросы на получение / производство, и, поскольку клиент не может разрешить myname, он терпит неудачу.

Вы должны исправить свой DNS, чтобы клиентский компьютер мог правильно разрешить myname. Если это не вариант, переконфигурируйте брокера Kafka для установки advertised.listeners на IP-адрес (т. Е. advertised.listeners=PLAINTEXT://10.1.2.3:9092)

Ref: https://rmoff.net/2018/08/02/kafka-listeners-explained/

...