Skip to content

ADR_00016: Dead Letter Queue & Retry Policy

Status: Proposed / Accepted
Date: 2025-12-30


Context

V distribuovaném event-driven systému se mohou vyskytnout situace, kdy:

  • event nelze okamžitě zpracovat (např. chybná data, nedostupný downstream),
  • dojde k dočasnému výpadku služby,
  • dojde k selhání aplikační logiky.

Bez jasné strategie retry a DLQ hrozí:

  • ztráta dat nebo událostí,
  • neviditelné chyby,
  • blokace zpracování dalších eventů,
  • nemožnost auditovat selhané eventy.

Decision

Retry Policy

  • Každý event handler má limitovaný počet retry pokusů (např. 3–5).
  • Používá se exponenciální backoff nebo jiná kontrolovaná strategie.
  • Po vyčerpání retry se event přesouvá do DLQ.

Dead Letter Queue (DLQ)

  • Eventy, které nelze zpracovat, jsou přesunuty do DLQ.
  • DLQ uchovává původní event i metadata (počet pokusů, čas selhání, trace ID).
  • Zajišťuje audit a dohledatelnost.

Zpracování DLQ

  • Manuální analýza a oprava eventů.
  • Eventy mohou být opětovně replayovány, pokud jsou opravitelné.
  • Každý DLQ proces je logován a auditován.

Consequences

Pozitiva

  • Systém je odolný vůči dočasným selháním
  • Žádné ztracené eventy
  • Kontrolovaný mechanismus pro problémové eventy
  • Lepší audit a dohledatelnost

Negativa

  • Vyšší provozní komplexita
  • Nutnost monitoringu DLQ
  • Vyšší nároky na infrastrukturu a procesy

Rationale

Rozhodnutí Důvod
Limitovaný retry Zabraňuje nekonečnému blokování systému
Exponenciální backoff Minimalizuje dopad do zatížení systému
Dead Letter Queue Zajišťuje, že selhané eventy nejsou ztraceny
Audit a replay Umožňuje kontrolu a bezpečné opětovné zpracování