Spring Boot容器无法连接到Kafka容器

tsa*_*txt 7 apache-kafka docker spring-boot docker-compose

我正在尝试将微服务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
Run Code Online (Sandbox Code Playgroud)

application.properties 在消费者中:

spring.kafka.consumer.bootstrap-servers=kafka:9092
spring.kafka.consumer.group-id=WorkUnitApp
spring.kafka.consumer.topic=kafka_topic
Run Code Online (Sandbox Code Playgroud)

application.properties 在生产者中:

spring.kafka.producer.bootstrap-servers=kafka:9092
Run Code Online (Sandbox Code Playgroud)

但是,如果我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
Run Code Online (Sandbox Code Playgroud)

application.properties 在生产者中:

spring.kafka.producer.bootstrap-servers=0.0.0.0:9092
Run Code Online (Sandbox Code Playgroud)

有什么问题,为什么linksfrom docker无效?

ps 0.0.0.0,因为mac os

已编辑

我在docker-compose.yml环境中添加了,kafka但仍然无法正常工作

  - KAFKA_ADVERTISED_PORT=9092
Run Code Online (Sandbox Code Playgroud)

Szy*_*ski 7

您需要将您的Kafka代理发布为kafka,这是所有链接容器的有效主机名(即,从Kafka协议角度来看,客户端需要连接到的主机名):

kafka:
  ...
  environment:
    KAFKA_ADVERTISED_HOST_NAME: kafka
Run Code Online (Sandbox Code Playgroud)