API Rate Limiting & Scalability Patterns · Lezione

Dead letter queue e strategie di retry

Impari a gestire i messaggi la cui elaborazione fallisce usando retry con backoff, limiti di redelivery e dead letter queue, per mantenere affidabili le pipeline asincrone.

Lezione 4 di 413 passaggi

Dead letter queue e strategie di retry è una lezione API Rate Limiting & Scalability Patterns gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento API Rate Limiting & Scalability Patterns, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso API Rate Limiting & Scalability Patterns include 4 lezioni in totale.

Parti di questa lezione non sono ancora state tradotte e vengono mostrate in inglese.

When Messages Fail

In an async pipeline, a consumer can fail to process a message — a bug, a bad payload, or a downstream outage. Without a plan, that message can block the queue or be lost.

This lesson covers retries and the dead letter queue.

Acknowledgements

A consumer acks a message to confirm successful processing. If it nacks (or never acks), the broker can redeliver it.

Acking before doing the work risks loss; ack only after success.

msg = queue.receive()
process(msg)
msg.ack()  # only after success

Naive Retries Are Dangerous

Immediately re-processing a failed message can create a tight loop that hammers a struggling downstream service — a self-inflicted outage.

You need delay and a limit.

Exponential Backoff

Wait longer after each failed attempt: 1s, 2s, 4s, 8s. This gives a transient problem time to recover instead of pounding it.

def delay(attempt):
    return min(2 ** attempt, 60)

Jitter

If many consumers back off on the same schedule, they retry in sync — a thundering herd. Add random jitter to spread retries out.

import random
def delay(attempt):
    base = min(2 ** attempt, 60)
    return base / 2 + random.uniform(0, base / 2)

Max Retry Limit

Some failures never succeed — a malformed message is poison. After a fixed number of attempts, stop retrying and move the message aside.

The Dead Letter Queue

A dead letter queue (DLQ) is a separate queue where messages go after exhausting retries. The main pipeline keeps flowing while failures are quarantined for inspection.

if msg.attempts >= MAX_RETRIES:
    dlq.send(msg)
else:
    requeue(msg, delay(msg.attempts))

Inspecting the DLQ

The DLQ is your debugging surface. Engineers review failed messages, find the root cause, fix code or data, and then replay them back into the main queue.

Idempotent Consumers

Retries mean a message may be processed more than once. Make handlers idempotent — processing the same message twice yields the same result, for example by tracking processed message IDs.

if seen.contains(msg.id):
    msg.ack()  # already handled
else:
    process(msg)
    seen.add(msg.id)

Alerting on the DLQ

A growing DLQ is a signal something is broken. Alert when its depth crosses a threshold so failures get human attention before they pile up.

Poison Message Patterns

Some failures repeat no matter how many times you retry — a malformed payload, a missing referenced record. Detect these early by inspecting the error type: route deterministic, non-transient failures straight to the DLQ instead of wasting retry attempts.

if is_permanent(error):
    dlq.send(msg)  # no point retrying
else:
    requeue(msg, delay(msg.attempts))

Quick Check

Test your understanding of failure handling.

Recap

You learned to handle message failures:

  • Ack after success, nack to redeliver
  • Exponential backoff with jitter spaces retries
  • A retry limit protects against poison messages
  • A DLQ quarantines failures for inspection and replay
  • Make consumers idempotent
Gratis per iniziare

Impara API Rate Limiting & Scalability Patterns con un tutor IA — gratis

Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.

Corsi
12
Lezioni
48

Domande Frequenti

La lezione «Dead letter queue e strategie di retry» è gratuita?

Sì — il testo completo di «Dead letter queue e strategie di retry» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso API Rate Limiting & Scalability Patterns, passa a CoddyKit PRO. Il corso API Rate Limiting & Scalability Patterns include 4 lezioni in totale.

Cosa imparerò in «Dead letter queue e strategie di retry»?

Impari a gestire i messaggi la cui elaborazione fallisce usando retry con backoff, limiti di redelivery e dead letter queue, per mantenere affidabili le pipeline asincrone. Eserciti API Rate Limiting & Scalability Patterns con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare API Rate Limiting & Scalability Patterns?

Non è richiesta alcuna esperienza precedente. API Rate Limiting & Scalability Patterns su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.

Quanto tempo richiede la lezione «Dead letter queue e strategie di retry»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione API Rate Limiting & Scalability Patterns?

Sì. Ogni lezione API Rate Limiting & Scalability Patterns include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Introduzione alle API asincrone
  2. Fondamenti delle code di messaggi
  3. Implementazione delle attività in background
  4. Dead letter queue e strategie di retry
← Torna a API Rate Limiting & Scalability Patterns