Подключитесь к Kafka, работающему в DockerJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Подключитесь к Kafka, работающему в Docker

Сообщение Anonymous »

Я настраиваю Docker-контейнер Kafka с одним узлом на своем локальном компьютере, как это описано в документации Confluent (шаги 2–3).

Кроме того, я также открыл порт 2181 Zookeeper и порт 9092 Kafka, чтобы я мог подключиться к ним с клиента, работающего на локальном компьютере:

Код: Выделить всё

$ docker run -d \
-p 2181:2181 \
--net=confluent \
--name=zookeeper \
-e ZOOKEEPER_CLIENT_PORT=2181 \
confluentinc/cp-zookeeper:4.1.0

$ docker run -d \
--net=confluent \
--name=kafka \
-p 9092:9092 \
-e KAFKA_ZOOKEEPER_CONNECT=zookeeper:2181 \
-e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://kafka:9092 \
-e KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR=1 \
confluentinc/cp-kafka:4.1.0
Проблема: Когда я пытаюсь подключиться к Kafka с хост-компьютера, соединение не удается, поскольку не удается разрешить адрес: kafka:9092. .

Вот мой Java-код:

Код: Выделить всё

Properties props = new Properties();
props.put("bootstrap.servers", "localhost:9092");
props.put("client.id", "KafkaExampleProducer");
props.put("key.serializer", LongSerializer.class.getName());
props.put("value.serializer", StringSerializer.class.getName());
KafkaProducer producer = new KafkaProducer(props);
ProducerRecord record = new ProducerRecord("foo", 1L, "Test 1");
producer.send(record).get();
producer.flush();
Исключение:

Код: Выделить всё

java.io.IOException: Can't resolve address: kafka:9092
at org.apache.kafka.common.network.Selector.doConnect(Selector.java:235) ~[kafka-clients-2.0.0.jar:na]
at org.apache.kafka.common.network.Selector.connect(Selector.java:214) ~[kafka-clients-2.0.0.jar:na]
at org.apache.kafka.clients.NetworkClient.initiateConnect(NetworkClient.java:864) [kafka-clients-2.0.0.jar:na]
at org.apache.kafka.clients.NetworkClient.ready(NetworkClient.java:265) [kafka-clients-2.0.0.jar:na]
at org.apache.kafka.clients.producer.internals.Sender.sendProducerData(Sender.java:266) [kafka-clients-2.0.0.jar:na]
at org.apache.kafka.clients.producer.internals.Sender.run(Sender.java:238) [kafka-clients-2.0.0.jar:na]
at org.apache.kafka.clients.producer.internals.Sender.run(Sender.java:176) [kafka-clients-2.0.0.jar:na]
at java.lang.Thread.run(Thread.java:748) [na:1.8.0_144]
Caused by: java.nio.channels.UnresolvedAddressException: null
at sun.nio.ch.Net.checkAddress(Net.java:101) ~[na:1.8.0_144]
at sun.nio.ch.SocketChannelImpl.connect(SocketChannelImpl.java:622) ~[na:1.8.0_144]
at org.apache.kafka.common.network.Selector.doConnect(Selector.java:233) ~[kafka-clients-2.0.0.jar:na]
... 7 common frames omitted
Вопрос: Как подключиться к Kafka, работающему в Docker? Мой код запускается с хост-машины, а не с Docker.

Примечание: я знаю, что теоретически могу поиграться с настройкой DNS и /etc/hosts, но это обходной путь — такого быть не должно. .

Здесь также есть аналогичный вопрос, однако он основан на изображении ches/kafka. Я использую изображение на основе confluentinc, которое не совпадает.

Подробнее здесь: https://stackoverflow.com/questions/516 ... -in-docker
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»