I am running into a problem with spring boot kafka docker, tried all the things mentioned in the below link but the issues still remain.
Spring Boot containers can not connect to the Kafka container
Attaching my docker-compose.yml
version: '2'
services:
zookeeper:
image: wurstmeister/zookeeper
container_name: zookeeper
ports:
- "2181:2181"
kafka:
image: wurstmeister/kafka
container_name: kafka
ports:
- "9092:9092"
environment:
KAFKA_ADVERTISED_HOST_NAME: kafka
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
my-app:
image: my-app
container_name: my-app
ports:
- "8081:8081"
depends_on:
- zookeeper
- kafka
The error log
-1 (localhost/127.0.0.1:9092) could not be established. Broker may not be available.
my-app | 2020-11-03 08:10:21.444 WARN 1 --- [| adminclient-1] org.apache.kafka.clients.NetworkClient : [AdminClient clientId=adminclient-1] Connection to node -1 (localhost/127.0.0.1:9092) could not be established. Broker may not be available.
I am running wrustmiester/kafka and wrustmiester/zookeeper.
If I run locally the spring boot app, everything runs smoothly.
The issue comes when I try to build an image of my spring boot app and run that image. Then the error is Broker may not be available.
Please if anyone can guide me.
Adding my application.yml
spring:
kafka:
consumer:
bootstrap-servers: localhost:9092
group-id: group_id
auto-offset-reset: earliest
key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
value-deserializer: org.springframework.kafka.support.serializer.JsonDeserializer
#org.apache.kafka.common.serialization.StringDeserializer
properties.spring.json.trusted.packages: com.myapp.pojo
producer:
bootstrap-servers: localhost:9092
key-serializer: org.apache.kafka.common.serialization.StringSerializer
value-serializer: org.springframework.kafka.support.serializer.JsonSerializer
#org.apache.kafka.common.serialization.StringSerializer
Updated my docker-compose.yml as
version: '3'
services:
zookeeper:
image: wurstmeister/zookeeper
container_name: zookeeper
network_mode: bridge
ports:
- "2181:2181"
kafka:
image: wurstmeister/kafka
container_name: kafka
network_mode: bridge
ports:
- "9092:9092"
hostname: kafka
environment:
KAFKA_ADVERTISED_HOST_NAME: kafka
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
# KAFKA_LISTENERS: INSIDE://:9092,OUTSIDE://:9094
# KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INSIDE:PLAINTEXT,OUTSIDE:PLAINTEXT
# KAFKA_INTER_BROKER_LISTENER_NAME: INSIDE
KAFKA_ADVERTISED_PORT: 9092
links:
- zookeeper
my-app:
image: my-app
container_name: my-app
network_mode: bridge
ports:
- "8081:8081"
depends_on:
- zookeeper
- kafka
Updated my application.yml as
spring:
kafka:
consumer:
bootstrap-servers: kafka:9092
group-id: group_id
auto-offset-reset: earliest
key-deserializer: org.apache.kafka.common.serialization.StringDeserializer
value-deserializer: org.springframework.kafka.support.serializer.JsonDeserializer
#org.apache.kafka.common.serialization.StringDeserializer
properties.spring.json.trusted.packages: com.myapp.pojo
producer:
bootstrap-servers: kafka:9092
key-serializer: org.apache.kafka.common.serialization.StringSerializer
value-serializer: org.springframework.kafka.support.serializer.JsonSerializer
#org.apache.kafka.common.serialization.StringSerializer
Error log is same
WARN 1 --- [| adminclient-1] org.apache.kafka.clients.NetworkClient : [AdminClient clientId=adminclient-1] Connection to node -1 (localhost/127.0.0.1:9092) could not be established. Broker may not be available.
my-app | 2020-11-03 17:05:39.585 WARN 1 --- [| adminclient-1] org.apache.kafka.clients.NetworkClient : [AdminClient clientId=adminclient-1] Connection to node -1 (localhost/127.0.0.1:9092) could not be established. Broker may not be available.