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í |