Kafka Client para Java: guía completa con ejemplos

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Introducción a Apache Kafka Client para Java

\n\n

Apache Kafka es una plataforma distribuida de transmisión de eventos que permite publicar, almacenar y procesar flujos de datos en tiempo real. La biblioteca Kafka Client para Java es el cliente oficial que proporciona una API para interactuar con los brokers de Kafka. Permite que las aplicaciones Java actúen como productores (enviar mensajes) y consumidores (leer mensajes), así como gestionar metadatos y tareas administrativas.

\n\n

Esta biblioteca es indispensable al construir arquitecturas de microservicios, sistemas de procesamiento de logs, pipelines ETL, sistemas de análisis en tiempo real y cualquier otro escenario que requiera una transferencia de datos confiable, escalable y tolerante a fallos entre componentes.

\n\n

Instalación de Kafka Client para Java

\n\n

Kafka Client para Java se distribuye a través de Maven Central Repository. Para agregar la biblioteca al proyecto, es necesario especificar la dependencia en el archivo pom.xml (para Maven) o 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 la versión actual -->\n</dependency>
\n\n

Gradle

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

Después de agregar la dependencia y actualizar el proyecto, todas las clases de la biblioteca estarán disponibles para importar.

\n\n

Inicio rápido: Producer y Consumer

\n\n

Consideremos un ejemplo mínimo de envío y recepción de un mensaje.

\n\n

Producer (Remitente)

\n
import org.apache.kafka.clients.producer.*;\nimport java.util.Properties;\n\npublic class SimpleProducer {\n    public static void main(String[] args) {\n        // 1. Configuración de propiedades\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. Creación del productor\n        Producer<String, String> producer = new KafkaProducer<>(props);\n\n        // 3. Envío del mensaje\n        ProducerRecord<String, String> record = new ProducerRecord<>("my-topic", "key1", "Hello, Kafka!");\n        producer.send(record);\n\n        // 4. Cierre del productor\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. Configuración de propiedades\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. Creación del consumidor\n        Consumer<String, String> consumer = new KafkaConsumer<>(props);\n\n        // 3. Suscripción al tópico\n        consumer.subscribe(Collections.singletonList("my-topic"));\n\n        // 4. Lectura de mensajes\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

Métodos principales y funciones de la biblioteca

\n\n

Cons

Recommendations