Retry vs DLQ vs Quarantine¶
Тип материала: инженерное сравнение. Выводы зависят от workload и failure model; схема и сценарии иллюстративные.
Проверка источников: 2026-11-02. Численные latency, throughput, cost и SLA не измерялись.
Критерии выбора¶
| Критерий | Retry | DLQ / quarantine |
|---|---|---|
| Workload | Временная недоступность; операция повторяема | Poison payload, exhausted budget или investigation |
| Consistency | Та же identity; unknown outcome разрешается | Durable disposition не равен business effect |
| Latency / throughput | Задержка backoff и amplification | Освобождает поток; создаёт recovery backlog |
| Cost / scalability | Bounded attempts, admission и timer resources | Protected storage, owners, controlled replay |
| Operational complexity | Deadline и классификация transient errors | Evidence, исправление и закрытие exception |
Механизм и ограничения¶
Retry меняет время попытки; DLQ маршрутизирует неуспех; quarantine задаёт управляемую изоляцию. Quarantine может физически храниться в DLQ topic, но требует state machine расследования. Не выбирайте route только по числу attempts: payload mismatch permanent, а unknown payment outcome требует status resolution.
Для iGaming invalid market update можно изолировать по entity, если независимые markets не зависят от него. Для ledger нужно явно решить, блокирует ли missing predecessor все последующие commands. Source offset можно продвинуть после durable disposition лишь если это соответствует договорённому contract.
Иллюстративная схема решения¶
flowchart TD
W[Workload and invariant] --> B[Define durable boundary]
B --> F[Compare failure and recovery obligations]
F --> L[Choose protocol for explicit scope]
L --> T[Fault test and reconciliation]
Failure и recovery¶
При недоступном DLQ нельзя silently commit вход: остановите продвижение. При retry storm уменьшите admission и установите budget. При replay сохраните identities и исходные coordinates, проверьте payload conflicts и закройте disposition по evidence результата.
Практическое упражнение¶
Для timeout PSP, invalid currency, temporary DB deadlock и несовместимого schema укажите route, владельца и условие replay. Не объявляйте неизвестный timeout permanent failure.
Связанные материалы и источники¶
- AWS timeouts and jitter — article; accessed 2026-11-02.
- Kafka 4.1 design — 4.1.