Travailler avec Kafka en Java : bibliothèques, configuration et exemples de code

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Travailler avec Kafka en Java : bibliothèques, configuration et exemples de code

\n\n

Apache Kafka est une plateforme distribuée de streaming de données largement utilisée pour construire des systèmes de messagerie à forte charge, la collecte de logs, le traitement d'événements en temps réel et l'intégration de microservices. Dans l'écosystème Java, Kafka occupe une place particulière grâce à la bibliothèque officielle Kafka Clients et à de nombreux outils supplémentaires. Dans cet article, nous allons détailler comment travailler avec Kafka en Java, quelles bibliothèques utiliser, et fournir des exemples de code pratiques.

\n\n

Bibliothèques principales pour travailler avec Kafka en Java

\n\n

Pour intégrer des applications Java avec Apache Kafka, il existe plusieurs bibliothèques clés :

\n\n
    \n
  • Kafka Clients — la bibliothèque officielle d'Apache, fournissant une API pour les producteurs (Producer) et les consommateurs (Consumer). C'est le moyen le plus simple et le plus fiable d'interagir avec les brokers.
  • \n
  • Spring Kafka — une extension pour Spring Framework qui simplifie la configuration et l'utilisation de Kafka via des annotations et des modèles (KafkaTemplate, @KafkaListener).
  • \n
  • Kafka Streams — une bibliothèque pour construire des applications de streaming (stream processing) en Java, sans nécessiter Spark ou Flink. Elle permet le filtrage, l'agrégation et la jointure de flux.
  • \n
  • Akka Streams Kafka (Alpakka) — une bibliothèque réactive pour travailler avec Kafka basée sur Akka Streams, adaptée aux applications asynchrones et non bloquantes.
  • \n
\n\n

Dans ce guide, nous nous concentrerons sur la bibliothèque officielle Kafka Clients, car elle constitue la base de tous les autres outils.

\n\n

Ajout des dépendances (Maven)

\n\n

Pour commencer, ajoutez la dépendance suivante dans votre pom.xml :

\n\n
<dependency>\n    <groupId>org.apache.kafka</groupId>\n    <artifactId>kafka-clients</artifactId>\n    <version>3.7.0</version>\n</dependency>
\n\n

Si vous utilisez Gradle, ajoutez :

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

Configuration du producteur (Producer)

\n\n

Le producteur envoie des messages aux topics Kafka. Voici un exemple simple de création et d'envoi d'un message.

\n\n
import org.apache.kafka.clients.producer.*;\nimport java.util.Properties;\n\npublic class SimpleProducer {\n    public static void main(String[] args) {\n        // Configuration des propriétés du producteur\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        props.put("acks", "all"); // Attente de confirmation de toutes les répliques\n        props.put("retries", 3);  // Nombre de tentatives en cas d'erreur\n\n        // Création du producteur\n        Producer<String, String> producer = new KafkaProducer<>(props);\n\n        // Envoi du message\n        ProducerRecord<String, String> record = new ProducerRecord<>("my-topic", "key1", "Bonjour, Kafka depuis Java !");\n        producer.send(record, (metadata, exception) -> {\n            if (exception == null) {\n                System.out.println("Message envoyé au topic : " + metadata.topic() +\n                                   ", partition : " + metadata.partition() +\n                                   ", offset : " + metadata.offset());\n            } else {\n                System.err.println("Erreur d'envoi : " + exception.getMessage());\n            }\n        });\n\n        // Fermeture du producteur\n        producer.close();\n    }\n}
\n\n

Dans cet exemple, nous définissons l'adresse du broker (localhost:9092), les sérialiseurs pour la clé et la valeur (dans ce

Recommendations