Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

[Sugestão] Erro produce.sed() - [Producer clientId=producer-1] Error connecting to node kafka:9092

Segue o arquivo docker-compose que funciona com Kafka-ui e também conectado ao app java:

version: "3"

services:
  kafka:
    image: bitnami/kafka:latest
    hostname: kafka0
    restart: on-failure
    ports:
      - 9092:9092
      - 29092:29092
    environment:
      - KAFKA_CFG_BROKER_ID=1
      - KAFKA_CFG_LISTENERS= INTERNAL://:9092,EXTERNAL://0.0.0.0:29092
      - KAFKA_CFG_ADVERTISED_LISTENERS= INTERNAL://kafka:9092,EXTERNAL://localhost:29092
      - KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP= INTERNAL:PLAINTEXT,EXTERNAL:PLAINTEXT
      - KAFKA_CFG_INTER_BROKER_LISTENER_NAME= INTERNAL
      - KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181
      - KAFKA_CFG_NUM_PARTITIONS=3
      - ALLOW_PLAINTEXT_LISTENER=yes
    depends_on:
      - zookeeper

  zookeeper:
    image: bitnami/zookeeper:latest
    ports:
      - 2181:2181
    environment:
      - ALLOW_ANONYMOUS_LOGIN=yes

  kafka-ui:
    image: provectuslabs/kafka-ui
    container_name: kafka-ui
    depends_on:
      - kafka
      - zookeeper
    ports:
      - "8080:8080"
    restart: always
    environment:
      - KAFKA_CLUSTERS_0_NAME=Ecommerce
      - KAFKA_CLUSTERS_0_BOOTSTRAPSERVERS=kafka:9092
      - KAFKA_CLUSTERS_0_ZOOKEEPER=zookeeper:2181
1 resposta
solução!

Oi, Diogo!

O erro Error connecting to node kafka:9092 que você está enfrentando ao tentar conectar o produtor Java ao Kafka pode estar relacionado a vários fatores, como configurações de rede, de porta ou de identificação do broker no Docker. Algumas sugestões para resolver ou diagnosticar o problema:

  • Verificar Configuração de Rede no Docker Como você está rodando o Kafka em um container Docker, a comunicação entre o producer Java e o Kafka pode estar sendo bloqueada pela configuração de rede. Verifique se a configuração de rede no Docker está corretamente mapeada entre os containers e se o host do Kafka (o localhost:9092) está acessível para o seu producer Java.

A sua configuração de KAFKA_CFG_ADVERTISED_LISTENERS e KAFKA_CFG_LISTENERS parece correta, mas o problema pode estar em como o producer Java está tentando conectar ao Kafka.

  • Alterar o Endpoint de Conexão do Producer No seu código Java, ao configurar o bootstrap.servers para o producer, tente usar localhost:29092 (porta externa mapeada no Docker) em vez de kafka:9092, já que a configuração de Kafka pode não estar acessível de fora do container com o nome kafka.

Alterando no código do seu Producer Java para:

props.put("bootstrap.servers", "localhost:29092"); Isso pode garantir que o producer se conecte ao Kafka através da porta externa (29092) mapeada corretamente no seu Docker.

  • Verificar Logs do Kafka Verifique os logs do Kafka para ver se há algum erro de configuração ou de rede. Para isso, acesse o container Kafka e veja os logs:

docker logs kafka Isso pode dar mais insights sobre se o Kafka está aceitando conexões na porta 9092 ou se está ocorrendo algum erro de rede.

  • Verificar Zookeeper O Kafka depende do Zookeeper para coordenação. Certifique-se de que o Zookeeper está rodando corretamente e aceitando conexões na porta 2181. Você pode verificar os logs do container do Zookeeper para isso:

docker logs zookeeper Se o Zookeeper não estiver acessível, o Kafka pode ter dificuldades para iniciar ou para se conectar aos seus brokers.

  • Verificar Configuração do Docker Compose Certifique-se de que as dependências entre os serviços estão corretamente configuradas no Docker Compose. Pelo seu arquivo, a dependência entre Kafka e Zookeeper está correta, mas às vezes o Docker pode precisar de um tempo extra para iniciar o Zookeeper antes do Kafka. Adicionar um tempo de espera na inicialização do Kafka pode ajudar:

    kafka: ... depends_on: - zookeeper entrypoint: /bin/sh -c "sleep 15; /opt/bitnami/kafka/bin/kafka-server-start.sh /opt/bitnami/kafka/config/server.properties"

Isso vai garantir que o Kafka espere um pouco mais até o Zookeeper estar totalmente disponível antes de tentar iniciar.

  • Testar Conexão ao Kafka com Kafka-UI Já que você tem o Kafka-UI rodando, use a interface web para testar a conexão com o broker Kafka. Acesse http://localhost:8080, configure o Kafka cluster e veja se a UI consegue se conectar ao broker na porta 9092. Isso pode te ajudar a identificar se o problema está no Kafka ou na configuração do producer Java.

Espero ter ajudado!