java. net .UnknownHostException Spring Boot AWS EC2 Apache Kafka - PullRequest
1 голос
/ 18 июня 2020

Я запускаю приложение Spring Boot, которое отправляет сообщения Kafka. Когда я запускаю приложение, чтобы запросить локальную Kafka, все в порядке. Но как только я пытаюсь запросить тот, который работает на экземпляре EC2, я получаю:

java.net.UnknownHostException: ip-172-31-32-47.us-east-2.compute.internal
at java.base/java.net.InetAddress$CachedAddresses.get(InetAddress.java:797) ~[na:na]
at java.base/java.net.InetAddress.getAllByName0(InetAddress.java:1505) ~[na:na]
at java.base/java.net.InetAddress.getAllByName(InetAddress.java:1364) ~[na:na]
at java.base/java.net.InetAddress.getAllByName(InetAddress.java:1298) ~[na:na]
at org.apache.kafka.clients.ClientUtils.resolve(ClientUtils.java:110) ~[kafka-clients-2.5.0.jar:na]
at org.apache.kafka.clients.ClusterConnectionStates$NodeConnectionState.currentAddress(ClusterConnectionStates.java:403) ~[kafka-clients-2.5.0.jar:na]
at org.apache.kafka.clients.ClusterConnectionStates$NodeConnectionState.access$200(ClusterConnectionStates.java:363) ~[kafka-clients-2.5.0.jar:na]
at org.apache.kafka.clients.ClusterConnectionStates.currentAddress(ClusterConnectionStates.java:151) ~[kafka-clients-2.5.0.jar:na]
at org.apache.kafka.clients.NetworkClient.initiateConnect(NetworkClient.java:955) ~[kafka-clients-2.5.0.jar:na]
at org.apache.kafka.clients.NetworkClient.ready(NetworkClient.java:293) ~[kafka-clients-2.5.0.jar:na]
at org.apache.kafka.clients.admin.KafkaAdminClient$AdminClientRunnable.sendEligibleCalls(KafkaAdminClient.java:1018) ~[kafka-clients-2.5.0.jar:na]
at org.apache.kafka.clients.admin.KafkaAdminClient$AdminClientRunnable.processRequests(KafkaAdminClient.java:1260) ~[kafka-clients-2.5.0.jar:na]
at org.apache.kafka.clients.admin.KafkaAdminClient$AdminClientRunnable.run(KafkaAdminClient.java:1203) ~[kafka-clients-2.5.0.jar:na]
at java.base/java.lang.Thread.run(Thread.java:834) ~[na:na]

введите описание изображения здесь

Зная, что это конфигурация приложения:

spring.cloud.stream.kafka.binder.brokers=ec2-18-221-154-81.us-east-2.compute.amazonaws.com:9092
sending.message.timeout.ms=5000
spring.cloud.stream.bindings.output.destination=meetupTopic
spring.cloud.stream.bindings.output.producer.partitionCount=1
spring.cloud.stream.bindings.output.content-type=text/plain
spring.cloud.stream.bindings.output.producer.headerMode=none

, а это класс производителя:

import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.stream.annotation.EnableBinding;
import org.springframework.cloud.stream.messaging.Source;
import org.springframework.messaging.support.MessageBuilder;
import org.springframework.stereotype.Component;
import org.springframework.web.socket.WebSocketMessage;

@Component
@EnableBinding(Source.class)
public class RsvpsKafkaProducer {

    @Value("${sending.message.timeout.ms}")
    private int timeout;

    private final Source source;

    public RsvpsKafkaProducer(Source source) {
        this.source = source;
    }

    public void sendRsvpMessage(WebSocketMessage<?> message) {

        source.output().send(MessageBuilder.withPayload(message.getPayload()).build(), timeout);
    }
}

Я пробовал много патчей, таких как изменение региона, редактирование файла / etc / hosts на экземпляре, на котором запущен Kafka, проверка группа безопасности, меняющая ОС. Вероятно, это проблема Kafka, связанная с его конфигурацией. Любое решение или предложение?

1 Ответ

0 голосов
/ 21 июня 2020

Мне пришлось добавить EC2 DNS в конфигурацию Apache Kafka, то есть:

listeners=PLAINTEXT://ec2-18-189-32-171.us-east-2.compute.amazonaws.com:9092
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...