0Pricing
Advanced Spring Boot 4: Event-Driven Architecture (Kafka) · Leçon

Nouvelles tentatives non bloquantes avec Retry Topics

Apprenez à utiliser @RetryableTopic de Spring Kafka pour effectuer des nouvelles tentatives non bloquantes et différées, afin de garder votre consommateur réactif lors du retraitement des messages échoués.

Nouvelles tentatives non bloquantes avec Retry Topics est une leçon Advanced Spring Boot 4: Event-Driven Architecture (Kafka) gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Advanced Spring Boot 4: Event-Driven Architecture (Kafka), et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Advanced Spring Boot 4: Event-Driven Architecture (Kafka) comprend 4 leçons au total.

Certaines parties de cette leçon n'ont pas encore été traduites et s'affichent en anglais.

The Problem with Blocking Retries

Blocking retries (Spring Retry) pause the consumer thread between attempts. A long backoff blocks the partition, stalling all later records.

Non-blocking retries solve this by moving failed records to dedicated retry topics.

How Retry Topics Work

When processing fails, the record is forwarded to a retry topic with a delay. A separate listener consumes the retry topic after the delay and tries again.

  • The main consumer keeps moving forward.
  • Each retry level can have a longer delay.

Enabling RetryableTopic

Annotate your listener with @RetryableTopic. Spring auto-creates the retry and DLT topics.

@RetryableTopic
@KafkaListener(topics = "orders")
public void handle(Order order) {
    paymentService.charge(order);
}

Configuring Attempts and Backoff

Customize the number of attempts and the delay strategy directly in the annotation.

@RetryableTopic(
    attempts = "4",
    backoff = @Backoff(delay = 1000, multiplier = 2.0))
@KafkaListener(topics = "orders")
public void handle(Order order) { /* ... */ }

Generated Topic Names

By default Spring creates topics like orders-retry-0, orders-retry-1, and finally orders-dlt.

Each retry topic corresponds to one backoff level.

Exponential vs Fixed Backoff

Set multiplier for exponential growth, or omit it for fixed delays.

  • Fixed: 1s, 1s, 1s.
  • Exponential: 1s, 2s, 4s.

Exponential is better for transient downstream outages.

Selecting Retryable Exceptions

Only retry exceptions that are transient. Use include or exclude to control which exceptions trigger retries.

@RetryableTopic(
    include = { RemoteServiceException.class },
    exclude = { ValidationException.class })
@KafkaListener(topics = "orders")
public void handle(Order order) { /* ... */ }

Handling the DLT

After all attempts fail, the record lands on the DLT. Add a @DltHandler method to react.

@DltHandler
public void handleDlt(Order order) {
    log.error("Order permanently failed: {}", order.getId());
}

Reading Retry Headers

Retry records carry headers such as the attempt count and original timestamp, letting you log how far a message progressed.

@Header(KafkaHeaders.ORIGINAL_TOPIC) String originalTopic

Blocking vs Non-Blocking

Use blocking retries for very short, immediate transients; use non-blocking retry topics when delays are longer and partition throughput matters.

Putting It Together

Non-blocking retries keep consumers responsive while still giving failed messages multiple chances. Combine @RetryableTopic, exponential backoff, exception filtering, and a @DltHandler.

Quick Check

Test your understanding of retry topics.

Recap

You learned non-blocking retries.

  • @RetryableTopic creates retry topics automatically.
  • Configure attempts, backoff, and a multiplier.
  • Filter retryable exceptions with include/exclude.
  • Use @DltHandler for permanently failed records.

Questions Fréquemment Posées

La leçon « Nouvelles tentatives non bloquantes avec Retry Topics » est-elle gratuite ?

Oui — le texte complet de « Nouvelles tentatives non bloquantes avec Retry Topics » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Advanced Spring Boot 4: Event-Driven Architecture (Kafka), passe à CoddyKit PRO. Le cours Advanced Spring Boot 4: Event-Driven Architecture (Kafka) comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Nouvelles tentatives non bloquantes avec Retry Topics » ?

Apprenez à utiliser @RetryableTopic de Spring Kafka pour effectuer des nouvelles tentatives non bloquantes et différées, afin de garder votre consommateur réactif lors du retraitement des messages éc… Tu pratiques Advanced Spring Boot 4: Event-Driven Architecture (Kafka) avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Advanced Spring Boot 4: Event-Driven Architecture (Kafka) ?

Aucune expérience préalable n'est requise. Advanced Spring Boot 4: Event-Driven Architecture (Kafka) sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.

Combien de temps prend la leçon « Nouvelles tentatives non bloquantes avec Retry Topics » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Advanced Spring Boot 4: Event-Driven Architecture (Kafka) ?

Oui. Chaque leçon Advanced Spring Boot 4: Event-Driven Architecture (Kafka) inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Gestion des exceptions des consommateurs
  2. Mécanismes de nouvelle tentative avec Spring Retry
  3. Implémenter les topics de lettres mortes (DLT)
  4. Nouvelles tentatives non bloquantes avec Retry Topics
← Retour à Advanced Spring Boot 4: Event-Driven Architecture (Kafka)