Boa noite pessoal,
Estou fazendo o curso de Apache Kafka e na parte de implementar o KafkaProducer em Java estou com erros, segue abaixo o meu fonte em Java:
package br.com.alura;
import java.util.Properties;
import java.util.concurrent.ExecutionException;
import org.apache.kafka.clients.producer.KafkaProducer;
import org.apache.kafka.clients.producer.ProducerConfig;
import org.apache.kafka.clients.producer.ProducerRecord;
import org.apache.kafka.common.serialization.StringSerializer;
public class NewOrderMain {
public static void main(String[] args) throws ExecutionException, InterruptedException {
var producer = new KafkaProducer<String, String>(properties());
var value = "1,1,500.00";
var record = new ProducerRecord<>("ECOMMERCE_NEW_ORDER",value, value);
producer.send(record, (data, ex) -> {
if (ex != null) {
ex.printStackTrace();
return;
}
System.out.println("sucesso enviando neste topico" + data.topic() + ":::partition " + data.partition() + "/ offset" + data.offset() + "/ timestamp " + data.timestamp());
}).get();
}
private static Properties properties() {
var properties = new Properties();
properties.setProperty(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "127.0.0.1:9092"); //Estabelecer conexão com servidor Kafka
properties.setProperty(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName()); //Serializador de String para byte para a Key do Map
properties.setProperty(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName()); //Serializador de String para byte para o Value do Map
return properties;
}
}
Segue o arquivo Pom XML:
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>br.com.alura</groupId>
<artifactId>ecommerce</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<!-- https://mvnrepository.com/artifact/org.apache.kafka/kafka-clients -->
<dependency>
<groupId>org.apache.kafka</groupId>
<artifactId>kafka-clients</artifactId>
<version>3.4.0</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.slf4j/slf4j-simple -->
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>2.0.6</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>2.0.6</version>
</dependency>
</dependencies>
<properties>
<maven.compiler.source>19</maven.compiler.source>
<maven.compiler.target>19</maven.compiler.target>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
</project>
Estou rodando o Kafka em um Container no Docker, a mensagem de erro que aparece ao compilar e executar o programa é:
[kafka-producer-network-thread | producer-1] WARN org.apache.kafka.clients.NetworkClient - [Producer clientId=producer-1] Error connecting to node 15adbe316ac0:9092 (id: 1001 rack: null)
java.net.UnknownHostException: Este host não é conhecido (15adbe316ac0)
at java.base/java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)
at org.apache.kafka.clients.producer.internals.Sender.sendProducerData(Sender.java:354)
at org.apache.kafka.clients.producer.internals.Sender.runOnce(Sender.java:327)
at org.apache.kafka.clients.producer.internals.Sender.run(Sender.java:243)
at java.base/java.lang.Thread.run(Thread.java:1589)
[kafka-producer-network-thread | producer-1] WARN org.apache.kafka.clients.NetworkClient - [Producer clientId=producer-1] Error connecting to node 15adbe316ac0:9092 (id: 1001 rack: null)