Trabalhando com Apache Kafka em Java: guia completo para desenvolvedores

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Trabalhando com Apache Kafka em Java: do básico ao uso avançado



Apache Kafka é uma plataforma distribuída para processamento de dados em fluxo que se tornou o padrão de facto para a construção de arquiteturas orientadas a eventos. Neste guia, vamos explorar como trabalhar eficientemente com Kafka em Java: desde a instalação das bibliotecas necessárias até a escrita de um produtor e consumidor com tratamento de erros.



Por que Java e Kafka são a combinação ideal?

Java é uma das principais linguagens para trabalhar com Kafka por várias razões:

  • O cliente oficial do Kafka é escrito em Java e oferece desempenho máximo
  • Ecossistema rico de bibliotecas (Spring Kafka, Kafka Streams, Akka Streams)
  • Tipagem forte e possibilidade de ajuste fino através de objetos de configuração


Instalação e adição de dependências

Para trabalhar com Kafka em Java, você precisará adicionar a dependência no pom.xml (Maven) ou build.gradle (Gradle).



Maven

<dependency>    <groupId>org.apache.kafka</groupId>    <artifactId>kafka-clients</artifactId>    <version>3.6.0</version></dependency>


Gradle

implementation 'org.apache.kafka:kafka-clients:3.6.0'


Criando um Kafka Producer (Produtor)

O produtor é responsável por enviar mensagens para os tópicos do Kafka. Aqui está um exemplo básico de configuração:



import org.apache.kafka.clients.producer.*;import org.apache.kafka.common.serialization.StringSerializer;import java.util.Properties;

public class SimpleProducer { public static void main(String[] args) { // 1. Configuração das propriedades do produtor Properties props = new Properties(); props.put(ProducerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092"); props.put(ProducerConfig.KEY_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName()); props.put(ProducerConfig.VALUE_SERIALIZER_CLASS_CONFIG, StringSerializer.class.getName()); // 2. Criação do produtor KafkaProducer<String, String> producer = new KafkaProducer<>(props); // 3. Envio da mensagem ProducerRecord<String, String> record = new ProducerRecord<>( "my-topic", "key-1", "Olá, Kafka do Java!" ); // 4. Envio assíncrono com callback producer.send(record, (metadata, exception) -> { if (exception == null) { System.out.println("Mensagem enviada: " + "topic=" + metadata.topic() + ", partition=" + metadata.partition() + ", offset=" + metadata.offset()); } else { System.err.println("Erro ao enviar: " + exception.getMessage()); } }); // 5. Fechamento do produtor producer.close(); }}


Criando um Kafka Consumer (Consumidor)

O consumidor lê mensagens dos tópicos. É importante configurar corretamente o grupo de consumidores para balanceamento de carga.



import org.apache.kafka.clients.consumer.*;import org.apache.kafka.common.serialization.StringDeserializer;import java.time.Duration;import java.util.Collections;import java.util.Properties;

public class SimpleConsumer { public static void main(String[] args) { // 1. Configuração das propriedades do consumidor Properties props = new Properties(); props.put(ConsumerConfig.BOOTSTRAP_SERVERS_CONFIG, "localhost:9092"); props.put(ConsumerConfig.GROUP_ID_CONFIG, "my-consumer-group"); props.put(ConsumerConfig.KEY_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class.getName()); props.put(ConsumerConfig.VALUE_DESERIALIZER_CLASS_CONFIG, StringDeserializer.class.getName()); props.put(Consu

Recommendations