Travailler avec Apache Kafka en Java : des bases à l'utilisation avancée
Apache Kafka est une plateforme distribuée de traitement de flux de données qui est devenue le standard de facto pour la construction d'architectures orientées événements. Dans ce guide, nous allons voir comment travailler efficacement avec Kafka en Java : de l'installation des bibliothèques nécessaires à l'écriture d'un producteur et d'un consommateur avec gestion des erreurs.
Pourquoi Java et Kafka forment-ils une paire idéale ?
Java est l'un des principaux langages pour travailler avec Kafka pour plusieurs raisons :
- Le client officiel de Kafka est écrit en Java et offre des performances maximales
- Un écosystème riche de bibliothèques (Spring Kafka, Kafka Streams, Akka Streams)
- Un typage strict et la possibilité d'un réglage fin via des objets de configuration
Installation et ajout des dépendances
Pour travailler avec Kafka en Java, vous devrez ajouter une dépendance dans 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'Création d'un Kafka Producer (Producteur)
Le producteur est responsable de l'envoi de messages dans les topics Kafka. Voici un exemple de configuration de base :
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. Configuration des propriétés du producteur 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. Création du producteur KafkaProducer<String, String> producer = new KafkaProducer<>(props); // 3. Envoi d'un message ProducerRecord<String, String> record = new ProducerRecord<>( "my-topic", "key-1", "Bonjour, Kafka depuis Java !" ); // 4. Envoi asynchrone avec callback producer.send(record, (metadata, exception) -> { if (exception == null) { System.out.println("Message envoyé : " + "topic=" + metadata.topic() + ", partition=" + metadata.partition() + ", offset=" + metadata.offset()); } else { System.err.println("Erreur d'envoi : " + exception.getMessage()); } }); // 5. Fermeture du producteur producer.close(); }}Création d'un Kafka Consumer (Consommateur)
Le consommateur lit les messages des topics. Il est important de configurer correctement le groupe de consommateurs pour l'équilibrage de charge.
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. Configuration des propriétés du consommateur 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 Aussi dans la bibliothèque
Travailler avec Excel en Kotlin : bibliothèques Apache POI et Apache POI pour Kotlin
Validation des données en TypeScript : bibliothèques Zod, Yup et io-ts
Surveillance des applications C++ : bibliothèques et outils pour la collecte de métriques