Travailler avec Kafka en Kotlin : bibliothèques et exemples

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 Kotlin : aperçu des bibliothèques et exemples pratiques



Apache Kafka est une plateforme distribuée de traitement de flux de données, devenue un standard de facto dans l'architecture microservices. Kotlin, en tant que langage JVM moderne, est entièrement compatible avec l'écosystème Java, ce qui permet d'utiliser toutes les bibliothèques populaires pour Kafka. Dans cet article, nous examinerons trois approches principales : le client Java officiel de Kafka, Spring Kafka et la bibliothèque légère Kafkakit. Tous les exemples sont écrits en Kotlin.



1. Client Kafka officiel (client Java)



La bibliothèque kafka-clients d'Apache est la base sur laquelle toutes les autres surcouches sont construites. Elle fournit une API de bas niveau pour les producteurs et les consommateurs. Pour Kotlin, il suffit d'ajouter la dépendance dans build.gradle.kts :



implementation("org.apache.kafka:kafka-clients:3.6.0")


Exemple de producteur en Kotlin



import org.apache.kafka.clients.producer.KafkaProducerimport org.apache.kafka.clients.producer.ProducerRecordimport java.util.Properties

fun createProducer(): KafkaProducer<String, String> { val props = Properties().apply { put("bootstrap.servers", "localhost:9092") put("key.serializer", "org.apache.kafka.common.serialization.StringSerializer") put("value.serializer", "org.apache.kafka.common.serialization.StringSerializer") } return KafkaProducer(props)}

fun main() { val producer = createProducer() val record = ProducerRecord("my-topic", "key1", "Hello from Kotlin!") producer.send(record) { metadata, exception -> if (exception != null) { println("Erreur d'envoi : ${exception.message}") } else { println("Envoyé dans la partition ${metadata.partition()} offset ${metadata.offset()}") } } producer.close()}


Exemple de consommateur en Kotlin



import org.apache.kafka.clients.consumer.ConsumerRecordsimport org.apache.kafka.clients.consumer.KafkaConsumerimport java.time.Durationimport java.util.Properties

fun createConsumer(): KafkaConsumer<String, String> { val props = Properties().apply { put("bootstrap.servers", "localhost:9092") put("group.id", "kotlin-group") put("key.deserializer", "org.apache.kafka.common.serialization.StringDeserializer") put("value.deserializer", "org.apache.kafka.common.serialization.StringDeserializer") put("auto.offset.reset", "earliest") } return KafkaConsumer(props)}

fun main() { val consumer = createConsumer() consumer.subscribe(listOf("my-topic"))

while (true) { val records: ConsumerRecords<String, String> = consumer.poll(Duration.ofMillis(100)) records.forEach { record -> println("Reçu : key=${record.key()}, value=${record.value()}, offset=${record.offset()}") } }}


2. Spring Kafka avec Kotlin



Si vous utilisez Spring Boot, Spring Kafka est le choix naturel. Il offre une approche déclarative via des annotations et une configuration automatique. Ajoutez la dépendance :



implementation("org.springframework.kafka:spring-kafka")


Configuration dans application.yml



spring:  kafka:    bootstrap-servers: localhost:9092    producer:      key-serializer: org.apache.kafka.common.serialization.StringSerializer      value-serializer: org.apache.kafka.common.serialization.StringSerializer    consumer:      group-id: spring-kotlin-group      key-deserializer: org.apache.kafka.common.serialization.StringDeserializer      value-deserializer: org.apache.kafka.common.serialization.StringDeserializer      auto-offset-reset: earliest


Producteur avec KafkaTemplate



import org.springfram                    

Recommendations