Kafka Client para Java: guia completo com exemplos

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

Introdução ao Apache Kafka Client para Java

\n\n

Apache Kafka é uma plataforma distribuída de streaming de eventos que permite publicar, armazenar e processar fluxos de dados em tempo real. A biblioteca Kafka Client para Java é o cliente oficial que fornece uma API para interagir com brokers Kafka. Ela permite que aplicações Java atuem como produtores (enviar mensagens) e consumidores (ler mensagens), além de gerenciar metadados e tarefas administrativas.

\n\n

Esta biblioteca é indispensável na construção de arquiteturas de microsserviços, sistemas de processamento de logs, pipelines ETL, sistemas de análise em tempo real e qualquer outro cenário que exija transferência de dados confiável, escalável e tolerante a falhas entre componentes.

\n\n

Instalação do Kafka Client para Java

\n\n

O Kafka Client para Java é distribuído através do Maven Central Repository. Para adicionar a biblioteca ao projeto, é necessário especificar a dependência no arquivo pom.xml (para Maven) ou build.gradle (para Gradle).

\n\n

Maven

\n
<dependency>\n    <groupId>org.apache.kafka</groupId>\n    <artifactId>kafka-clients</artifactId>\n    <version>3.6.0</version> <!-- Use a versão atual -->\n</dependency>
\n\n

Gradle

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

Após adicionar a dependência e atualizar o projeto, todas as classes da biblioteca estarão disponíveis para importação.

\n\n

Início rápido: Producer e Consumer

\n\n

Vamos considerar um exemplo mínimo de envio e recebimento de mensagens.

\n\n

Producer (Remetente)

\n
import org.apache.kafka.clients.producer.*;\nimport java.util.Properties;\n\npublic class SimpleProducer {\n    public static void main(String[] args) {\n        // 1. Configuração das propriedades\n        Properties props = new Properties();\n        props.put("bootstrap.servers", "localhost:9092");\n        props.put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer");\n        props.put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer");\n\n        // 2. Criação do produtor\n        Producer<String, String> producer = new KafkaProducer<>(props);\n\n        // 3. Envio da mensagem\n        ProducerRecord<String, String> record = new ProducerRecord<>("my-topic", "key1", "Hello, Kafka!");\n        producer.send(record);\n\n        // 4. Fechamento do produtor\n        producer.close();\n    }\n}
\n\n

Consumer (Receptor)

\n
import org.apache.kafka.clients.consumer.*;\nimport java.time.Duration;\nimport java.util.Collections;\nimport java.util.Properties;\n\npublic class SimpleConsumer {\n    public static void main(String[] args) {\n        // 1. Configuração das propriedades\n        Properties props = new Properties();\n        props.put("bootstrap.servers", "localhost:9092");\n        props.put("group.id", "my-group");\n        props.put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");\n        props.put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer");\n        props.put("auto.offset.reset", "earliest");\n\n        // 2. Criação do consumidor\n        Consumer<String, String> consumer = new KafkaConsumer<>(props);\n\n        // 3. Inscrição no tópico\n        consumer.subscribe(Collections.singletonList("my-topic"));\n\n        // 4. Leitura das mensagens\n        while (true) {\n            ConsumerRecords<String, String> records = consumer.poll(Duration.ofMillis(100));\n            for (ConsumerRecord<String, String> record : records) {\n                System.out.printf("offset = %d, key = %s, value = %s%n", record.offset(), record.key(), record.value());\n            }\n        }\n    }\n}
\n\n

Principais métodos e funções da biblioteca

\n\n

Cons

Recommendations