3
respostas

[Dúvida] Erro : Could not be established. Broker may not be available.

Ola pessoal, tenho 2 duvidas, primeiro ao rodar o main da New Order aparece este erro "could not be established. Broker may not be available."

------ Erro 1 main] WARN org.apache.kafka.clients.NetworkClient - [Consumer clientId=e04e095d-4ec2-4e1f-a046-c653ecc9bf8e, groupId=FraudDetectorService] Connection to node -1 (/127.0.0.1:9092) could not be established. Broker may not be available.

AParece ao rodar a classe "Topic ECOMMERCE_NEW_ORDER not present in metadata after 60000 ms." ------ Erro 2 org.apache.kafka.common.errors.TimeoutException: Topic ECOMMERCE_NEW_ORDER not present in metadata after 60000 ms. [main] INFO org.apache.kafka.clients.producer.KafkaProducer - [Producer clientId=producer-1] Closing the Kafka producer with timeoutMillis = 9223372036854775807 ms. Exception in thread "main" java.util.concurrent.ExecutionException: org.apache.kafka.common.errors.TimeoutException: Topic ECOMMERCE_NEW_ORDER not present in metadata after 60000 ms. at org.apache.kafka.clients.producer.KafkaProducer$FutureFailure.(KafkaProducer.java:1269) at org.apache.kafka.clients.producer.KafkaProducer.doSend(KafkaProducer.java:933) at org.apache.kafka.clients.producer.KafkaProducer.send(KafkaProducer.java:856) at br.com.alura.ecommerce.KafkaDispatcher.send(KafkaDispatcher.java:39) at br.com.alura.ecommerce.NewOrderMain.main(NewOrderMain.java:14) Caused by: org.apache.kafka.common.errors.TimeoutException: Topic ECOMMERCE_NEW_ORDER not present in metadata after 60000 ms.

Podem me ajudar?
3 respostas

Olá, Fabio.

Tudo bem?

Parece ser dois problemas principais ao tentar rodar sua aplicação Kafka. Você pode tentar o seguinte:

Depois tenta seguir esses:

Erro 1: "Connection to node -1 (/127.0.0.1:9092) could not be established. Broker may not be available."

Esse erro geralmente indica que o Kafka broker não está disponível ou não está rodando na porta especificada (9092). Aqui estão algumas coisas que você pode verificar:

  1. Verifique se o Kafka está rodando: Certifique-se de que o Kafka broker está realmente em execução. Você pode fazer isso verificando os logs do Kafka ou usando um comando como ps -ef | grep kafka no terminal.

  2. Verifique a configuração do Kafka: Certifique-se de que o server.properties do Kafka está configurado para ouvir na porta 9092. O arquivo server.properties deve ter a linha listeners=PLAINTEXT://:9092.

  3. Verifique o Zookeeper: O Kafka depende do Zookeeper para gerenciar o cluster. Certifique-se de que o Zookeeper também está rodando.

Erro 2: "Topic ECOMMERCE_NEW_ORDER not present in metadata after 60000 ms."

Esse erro indica que o tópico ECOMMERCE_NEW_ORDER não foi criado ou não está disponível. Aqui estão algumas etapas para tentar resolver isso:

  1. Crie o tópico manualmente: Você pode criar o tópico manualmente usando o comando Kafka CLI. No terminal, navegue até o diretório Kafka e execute o seguinte comando:

    bin/kafka-topics.sh --create --topic ECOMMERCE_NEW_ORDER --bootstrap-server localhost:9092 --partitions 1 --replication-factor 1
    

    Isso criará o tópico ECOMMERCE_NEW_ORDER com uma partição e um fator de replicação de 1.

  2. Verifique a configuração do produtor: Certifique-se de que o produtor Kafka está configurado corretamente para enviar mensagens para o tópico ECOMMERCE_NEW_ORDER.

  3. Verifique os logs do Kafka: Às vezes, os logs do Kafka podem fornecer mais detalhes sobre por que o tópico não está disponível.

Exemplo Prático

Aqui está um exemplo de como você pode criar o tópico manualmente e verificar se o Kafka está rodando:

  1. Iniciar o Zookeeper:

    bin/zookeeper-server-start.sh config/zookeeper.properties
    
  2. Iniciar o Kafka:

    bin/kafka-server-start.sh config/server.properties
    
  3. Criar o tópico:

    bin/kafka-topics.sh --create --topic ECOMMERCE_NEW_ORDER --bootstrap-server localhost:9092 --partitions 1 --replication-factor 1
    

Depois de seguir esses passos, tente rodar sua aplicação novamente e veja se os erros persistem.

Espero ter ajudado e bons estudos!

Criado o topic, manualmente porem o erro permanece.

Como o projeto do JAVA vai enxergar o Broker? [main] INFO org.apache.kafka.clients.consumer.KafkaConsumer - [Consumer clientId=consumer-1, groupId=EmailService] Subscribed to topic(s): ECOMMERCE_SEND_EMAIL [main] WARN org.apache.kafka.clients.NetworkClient - [Consumer clientId=consumer-1, groupId=EmailService] Connection to node -1 (/127.0.0.1:9092) could not be established. Broker may not be available.


main] INFO org.apache.kafka.clients.consumer.KafkaConsumer - [Consumer clientId=FraudDetectorService-224eb412-d1c7-4489-81a9-33f1314d64ae, groupId=FraudDetectorService] Subscribed to topic(s): ECOMMERCE_NEW_ORDER [main] WARN org.apache.kafka.clients.NetworkClient - [Consumer clientId=FraudDetectorService-224eb412-d1c7-4489-81a9-33f1314d64ae, groupId=FraudDetectorService] Connection to node -1 (/127.0.0.1:9092) could not be established. Broker may not be available.

Parece que mesmo após criar o tópico manualmente, o erro "Connection to node -1 (/127.0.0.1:9092) could not be established. Broker may not be available." continua. Isso indica que o problema persiste na conexão entre o produtor/consumidor Java e o broker Kafka.

Para tentar resolver o problema, você pode fazer essas verificações:

Verificação de Conectividade e Configuração do Kafka

  1. Verifique a Conectividade com o Broker:

    • Verifique se o broker Kafka está realmente acessível na porta 9092. Você pode usar um comando como telnet localhost 9092 ou nc -zv localhost 9092 para verificar a conectividade com a porta. Se você não conseguir se conectar, pode haver um problema de rede ou configuração no Kafka.
  2. Verifique o Arquivo server.properties:

    • Abra o arquivo server.properties no diretório de configuração do Kafka e verifique se a linha listeners=PLAINTEXT://:9092 está presente e corretamente configurada. Isso garante que o broker esteja ouvindo na porta 9092.
  3. Logs do Kafka:

    • Verifique os logs do Kafka em busca de erros ou avisos que possam indicar problemas com a inicialização do broker. Os logs geralmente estão em um diretório como logs dentro do diretório de instalação do Kafka.

O foco do erro parece esse mesmo: conexão entre o produtor/consumidor Java e o broker Kafka.