【发布时间】:2021-02-15 22:22:05
【问题描述】:
我在使用 spring boot kafka docker 时遇到问题,尝试了以下链接中提到的所有方法,但问题仍然存在。
Spring Boot containers can not connect to the Kafka container
附加我的 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
错误日志
-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.
我正在运行 wrustmiester/kafka 和 wrustmiester/zookeeper。
如果我在本地运行 spring boot 应用程序,一切运行顺利。
当我尝试构建我的 Spring Boot 应用程序的映像并运行该映像时,问题就出现了。然后错误是 Broker 可能不可用。
请哪位大神指导一下。
添加我的 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
将我的 docker-compose.yml 更新为
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
将我的 application.yml 更新为
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
错误日志相同
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.
【问题讨论】:
-
只提供链接无济于事,请告诉我哪里出错了
-
博文中提到,连接localhost是不正确的。在应用容器内,它指的是应用容器,而不是代理。您的生产者和消费者无法连接到应用容器中的任何内容
标签: spring-boot docker apache-kafka