Подтвердить что ты не робот

Kafka - невозможно отправить сообщение на удаленный сервер с помощью Java

Я пытаюсь создать кластер Kafka для отправки сообщений на пульт дистанционного управления. Я сконфигурировал все, как описано здесь. Я запускаю это на машине Linux red hat, и он отлично работает с помощью оболочки. После написания java-кода, как описано в учебнике quick start на моем компьютере с Windows, я получил следующую ошибку:

...
DEBUG kafka.client.ClientUtils$ - Successfully fetched metadata for 1 topic(s)     Set(example)
...
ERROR kafka.producer.SyncProducer - Producer connection to cldExampleKafka.domain:80 unsuccessful 
java.nio.channels.UnresolvedAddressException
    ...
    at kafka.producer.async.ProducerSendThread.run(ProducerSendThread.scala:44)
...
WARN kafka.producer.async.DefaultEventHandler - Failed to send producer request with correlation id 2 to broker 0 with data for patitions [ati,0]
java.nio.channels.UnresolvedAddressException
...
kafka.common.FailedToSendMessageException: Failed to send message after 3 tries.

Я также попытался запустить банку на другой машине Linux и по-прежнему получил ту же ошибку.

Измените адрес на localhost и запустите java-код как банку на машине, где установлен kafka.

Я верю в это что-то с конфигурацией, но я не смог ее найти.

4b9b3361

Ответ 1

В вашей кафке server.properties есть прокомментированная конфигурация

#advertised.host.name=<Some IP>

Раскомментируйте это и добавьте IP-адрес Linux-машины, в которой работает kafka.

advertised.host.name=<Kafka Running Machine IP>

И подключитесь от клиентов к <Kafka Running Machine IP> Это должно исправить вашу проблему.

ИЗМЕНИТЬ

При желании вы можете раскомментировать

#advertised.port=9092

Также, если вы слушаете другой порт, чем стандартный.

Ответ 2

Работает с

from server.properties Uncomment

listeners=PLAINTEXT://:9092

И

advertised.listeners=PLAINTEXT://<HOST IP>:9092

Замените <HOST IP> на фактический IP.

Ответ 3

Попытка подключения к удаленному кластеру kafka с моей локальной машины.

ВМ имел один внутренний (9.0.0.1) и один внешний IP (192.1.1.1). Я мог ssh только для внутреннего & не внешний. Я внес эти изменения в свой conifg/server.properties:

//установить IP-адрес устройства (найти с помощью ifconfig или hostname -I)

listeners=PLAINTEXT://192.1.1.1:9092

//установить IP-адрес, к которому подключатся потребитель и производитель

advertised.listeners=PLAINTEXT://9.0.0.1:9092  

Ответ 4

в config/server.properties
Я положил это listeners=PLAINTEXT://[server_ip]:9092

и все работало нормально.

Для быстрого тестирования не забудьте использовать [server_ip] в командной строке kafka-consumer. Пример:

/usr/local/kafka_2.11-2.0.0/kafka-console-consumer.sh --property print.timestamp=true --bootstrap-server [server_ip]:9092 --topic [you_topic]

Я надеюсь, что это может помочь вам.
С уважением Али