Перейти к содержанию

Retry vs DLQ vs Quarantine

Раздел 04 · Сравнения

Тип материала: инженерное сравнение. Выводы зависят от 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.

Связанные материалы и источники

Retry · DLQ