我正在尝试将微服务 Spring Boot
与 Kafka
一起使用,但我的 Spring Boot
容器无法连接到 Kafka
容器。
docker-compose.yml
:
version: '3'
services:
zookeeper:
image: wurstmeister/zookeeper
container_name: zookeeper
restart: always
ports:
- 2181:2181
kafka:
image: wurstmeister/kafka
container_name: kafka
restart: always
ports:
- 9092:9092
depends_on:
- zookeeper
links:
- zookeeper:zookeeper
environment:
KAFKA_ADVERTISED_HOST_NAME: localhost
KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
consumer:
image: consumer
container_name: consumer
depends_on:
- kafka
restart: always
ports:
- 8084:8080
depends_on:
- kafka
links:
- kafka:kafka
producer:
image: producer
container_name: producer
depends_on:
- kafka
restart: always
ports:
- 8085:8080
depends_on:
- kafka
links:
- kafka:kafka
application.properties
in Consumer:
spring.kafka.consumer.bootstrap-servers=kafka:9092
spring.kafka.consumer.group-id=WorkUnitApp
spring.kafka.consumer.topic=kafka_topic
application.properties
在生产者中:
spring.kafka.producer.bootstrap-servers=kafka:9092
但如果我在容器中运行 Kafka
并且在本地运行 Spring Boot
微服务,它就可以工作。
application.properties
in Consumer:
spring.kafka.consumer.bootstrap-servers=0.0.0.0:9092
spring.kafka.consumer.group-id=WorkUnitApp
spring.kafka.consumer.topic=kafka_topic
application.properties
在生产者中:
spring.kafka.producer.bootstrap-servers=0.0.0.0:9092
什么问题,为什么 docker
中的 links
不起作用?
附言0.0.0.0 因为 mac os
已编辑
我在 docker-compose.yml
环境中添加到 kafka
但它仍然不起作用
- KAFKA_ADVERTISED_PORT=9092
最佳答案
您需要将您的 Kafka 代理宣传为 kafka
,这是所有链接容器的有效主机名(即客户端需要从 < strong>Kafka 协议(protocol)角度,所以 kafka:9092
是正确的,而不是 0.0.0.0
):
kafka:
...
environment:
KAFKA_ADVERTISED_HOST_NAME: kafka
关于docker - Spring Boot 容器无法连接到 Kafka 容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48245398/