Клиент Python Kafka не может подключиться к удаленному серверу Kafka

У меня есть виртуальная машина Ubuntu в облаке, где я скачал Kafka версии 2.8.1 из Официальный сайт Кафки и следовал инструкциям в Официальное краткое руководство по Kafka.

Я использую клиент Python для использования одной из тем, которые я создал как часть краткого руководства. Когда я запускаю его на виртуальной машине, все работает нормально, однако, когда я запускаю ту же программу в своей локальной системе, я получаю следующую ошибку.

Unable connect to node with id 0: [Errno 8] nodename nor servname provided, or not known
Traceback (most recent call last):
...
...
File "/Path/python3.9/site-packages/aiokafka/client.py", line 547, in check_version
   raise KafkaConnectionError(
kafka.errors.KafkaConnectionError: KafkaConnectionError: No connection to node with id 0

Программа Python, которую я использую:

import asyncio
import aiokafka

async def consume(self):
    consumer = aiokafka.AIOKafkaConsumer(
        "quickstart-events", bootstrap_servers = "IP:9092"
    )
    try:
        await consumer.start()
        async for msg in self.consumer:
            print(
                "consumed: ",
                msg.topic,
                msg.partition,
                msg.offset,
                msg.key,
                msg.value,
                msg.timestamp,
            )
    finally:
        await consumer.stop()

asyncio.run(consume())

Я убедился, что необходимые порты (9022) в Ubuntu открыты - Я проверил, что могу подключиться через telnet к порту 9022 из моей локальной системы.

Я не уверен, что может быть причиной того, что я не могу получить доступ к Kafka через Интернет. Я упускаю что-то очевидное?

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
36
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Измените следующий атрибут в config/server.properties на адрес сервера начальной загрузки, который вы используете в своем коде.

advertised.listeners = PLAINTEXT://IP or FQDN:9092

Они не обязательно должны совпадать в клиентском коде, просто загрузочный адрес и объявленные адреса разрешаются из клиентской сети. Например, загрузочный адрес может быть одним балансировщиком нагрузки, который связывается с брокером и возвращает свой фактический удаленный адрес.

OneCricketeer 23.04.2022 15:50

Другие вопросы по теме