【发布时间】:2018-06-23 01:05:38
【问题描述】:
我正在尝试将微服务 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 在消费者中:
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 在消费者中:
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
【问题讨论】:
-
我们处于同样的情况,我不确定它是如何工作的,但是我们能够以一种可以从外部和内部使用文档示例中描述的多协议设置(INSIDE/OUTSIDE 部分):github.com/wurstmeister/kafka-docker#example
-
你使用的是 mac 还是 Linux?
-
您是否尝试将
KAFKA_ADVERTISED_HOST_NAME设置为kafka? -
@Thilo 我看了但没有成功(INSIDE/OUTSIDE 部分)
-
我的意思正好相反——你试过
KAFKA_ADVERTISED_HOST_NAME=kafka吗?
标签: docker spring-boot apache-kafka docker-compose