Как подключиться spring микросервису из docker контейнера к kafka в контейнере?
Создаю контейнеры через docker-compose up
version: '3'
services:
zookeeper:
image: confluentinc/cp-zookeeper:latest
environment:
ZOOKEEPER_CLIENT_PORT: 2181
ZOOKEEPER_TICK_TIME: 2000
ports:
- 22181:2181
kafka:
image: confluentinc/cp-kafka:latest
depends_on:
- zookeeper
ports:
- 29092:29092
environment:
KAFKA_BROKER_ID: 1
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://kafka:9092,PLAINTEXT_HOST://localhost:29092
KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: PLAINTEXT:PLAINTEXT,PLAINTEXT_HOST:PLAINTEXT
KAFKA_INTER_BROKER_LISTENER_NAME: PLAINTEXT
KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR: 1
mctwo:
build: /
ports:
- 9090:9090
networks:
default:
external:
name: mcone_default
Объединяю в одну сеть. Теперь по идее до контейнера с кафкой можно достучаться по адресу kafka:29092? или kafka_1:29092? В application.yml перепробовал разные адреса, но итог один
spring:
kafka:
bootstrap-servers: kafka_1:29092
Но подключиться не может.
mctwo_1 | 2021-12-28 16:06:46.838 WARN 1 --- [| adminclient-1] org.apache.kafka.clients.NetworkClient : [AdminClient clientId=adminclient-1] Connection to node -1 (
kafka/172.21.0.5:29092) could not be established. Broker may not be available.
mctwo_1 | 2021-12-28 16:07:03.565 WARN 1 --- [| adminclient-1] org.apache.kafka.clients.NetworkClient : [AdminClient clientId=adminclient-1] Connection to node 1 (l
ocalhost/127.0.0.1:29092) could not be established. Broker may not be available.
Где посмотреть нужный адрес?
Ответы (2 шт):
Командой docker container inspect mctwo_1 проверьте в какой сети находится ваш контейнер mctwo_1 из которого вы пытаетесь соединится с kafka.
Далее командой docker container inspect kafka_1 проверьте находится ли ваш контейнер kafka_1 в той же сети.
Если они оба в одной сети, то в качестве имени хоста для соединения можно использовать имя сервиса kafka или имя контейнера kafka_1.
Если при этом остается ошибка, то смотрите в сторону настроек сервиса kafka.
У тебя Кафка внутри сети стартует на 9092, при этом прокидываешь с хоста 29092 на 29092, так что снаружи к Кафке точно не подключиться (порт прокинут в никуда). Стоит поменять на
29092:9092, чтобы можно было подключаться извне Докера (но mctwo не работает не из-за этого).mctwo сервис в той же сети, поэтому он должен смочь подключиться к kafka:9092, но ты ему говоришь идти на 29092. Тебе надо сделать
spring.kafka.bootstrap-servers: kafka:9092