Formation Spring Boot : API REST, sécurité, Kafka et Docker

Spring Kafka : streaming et résilience avec Spring Boot

Producers, consumers, topics, partitions, parallélisme, Strategy Pattern, résilience et bonnes pratiques pour construire une architecture événementielle…

Réservé aux abonnés

Introduction

Spring Kafka intègre Apache Kafka à Spring Boot : KafkaTemplate pour produire, @KafkaListener pour consommer. Kafka n’est plus un simple broker de messages : c’est devenu un pilier des architectures distribuées, des microservices event-driven et des pipelines temps réel. Couplé à Spring Boot, il permet d’implémenter des systèmes robustes, scalables et découplés.

Ce chapitre couvre la maîtrise des producteurs, des consommateurs, du parallélisme, des partitions, du Strategy Pattern pour router les événements et des mécanismes de résilience industrielle.

Lexique essentiel

Producer

Émet des événements dans un topic.

Consumer

Lit et traite les messages depuis un topic.

Partition

Unité de parallélisme d’un topic.

Offset

Position du message dans la partition.

Consumer Group

Groupe de consommateurs partageant un topic de manière parallèle.

Dead Letter Queue (DLQ)

Topic dédié aux messages en erreur.

1. Configuration Kafka avec Spring Boot

Spring Boot simplifie fortement la configuration Kafka grâce aux propriétés dédiées.

spring.kafka.bootstrap-servers=localhost:9092
spring.kafka.consumer.group-id=order-group
spring.kafka.consumer.auto-offset-reset=earliest
spring.kafka.producer.key-serializer=org.apache.kafka.common.serialization.StringSerializer
spring.kafka.producer.value-serializer=org.springframework.kafka.support.serializer.JsonSerializer
spring.kafka.consumer.key-deserializer=org.apache.kafka.common.serialization.StringDeserializer
spring.kafka.consumer.value-deserializer=org.springframework.kafka.support.serializer.JsonDeserializer
# obligatoire avec JsonDeserializer, sinon "class is not in the trusted packages"
spring.kafka.consumer.properties.spring.json.trusted.packages=com.example.events

Producer professionnel

@Service
@RequiredArgsConstructor
public class OrderProducer {

    private final KafkaTemplate<String, OrderCreatedEvent> template;

    public void send(OrderCreatedEvent event) {
        template.send("order.created", event.orderId().toString(), event);
    }
}

La suite de cette leçon est réservée aux abonnés

Les 3 premières leçons de chaque formation sont gratuites. Débloquez la suite pour continuer.