1
resposta

[Dúvida] Tentando usar kafka pelo docker numa máquina windows

Boa tarde, estou tentando usar kafka e zookeeper com docker, tenho essa configuração no docker-compose:

version: "2"

services:
  zookeeper:
    image: docker.io/bitnami/zookeeper:3.8
    ports:
      - "2181:2181"
    volumes:
      - "zookeeper_data:/bitnami"
    environment:
      - ALLOW_ANONYMOUS_LOGIN=yes
  kafka:
    image: docker.io/bitnami/kafka:3.4
    ports:
      - "9092:9092"
    volumes:
      - "kafka_data:/bitnami"
    environment:
      - ALLOW_PLAINTEXT_LISTENER=yes
      - KAFKA_ENABLE_KRAFT=no
      - KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181
      - KAFKA_CFG_LISTENERS=PLAINTEXT://:9092
    depends_on:
      - zookeeper

volumes:
  zookeeper_data:
    driver: local
  kafka_data:
    driver: local

Parece que o código está funcionando, porque eu acessei os logs do container e existe o tópico que o código JAVA criou, mas no console da aplicação quebra no seguinte erro: "[main] WARN org.apache.kafka.clients.NetworkClient - [Consumer clientId=consumer-1, groupId=FraudDetectorService] Error connecting to node cd35e7028915:9092 (id: 1001 rack: null) java.net.UnknownHostException: cd35e7028915"

Alguém sabe o que poderia ser?

1 resposta

Olá, Wellington

Pelo que você descreveu, parece que o seu consumidor Kafka está tentando se conectar ao broker Kafka pelo nome do contêiner (neste caso, "cd35e7028915"), mas não está conseguindo resolver esse nome para um endereço IP, resultando no erro "java.net.UnknownHostException".

Uma possível solução para o problema seria configurar o Kafka para usar o nome do host em vez do nome do contêiner. Isso pode ser feito adicionando a seguinte linha ao seu serviço Kafka no arquivo docker-compose:

    environment:
      - KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9092

Isso fará com que o Kafka anuncie aos clientes que ele está disponível no endereço "localhost:9092", em vez do nome do contêiner.

Aqui está como ficaria o seu arquivo docker-compose com essa modificação:

version: "2"

services:
  zookeeper:
    image: docker.io/bitnami/zookeeper:3.8
    ports:
      - "2181:2181"
    volumes:
      - "zookeeper_data:/bitnami"
    environment:
      - ALLOW_ANONYMOUS_LOGIN=yes
  kafka:
    image: docker.io/bitnami/kafka:3.4
    ports:
      - "9092:9092"
    volumes:
      - "kafka_data:/bitnami"
    environment:
      - ALLOW_PLAINTEXT_LISTENER=yes
      - KAFKA_ENABLE_KRAFT=no
      - KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181
      - KAFKA_CFG_LISTENERS=PLAINTEXT://:9092
      - KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://localhost:9092
    depends_on:
      - zookeeper

volumes:
  zookeeper_data:
    driver: local
  kafka_data:
    driver: local

Espero que isso possa resolver o seu problema. Lembre-se que essa é uma sugestão baseada na informação que você forneceu, e pode não ser a solução definitiva para o problema. Espero ter ajudado e bons estudos!