Вопрос проверяет знание архитектурных подходов к обработке ошибок и повторных попыток.
Основные стратегии — ограничение числа повторных попыток, использование DLQ и отложенных повторных доставок. Также применяют exponential backoff, чтобы снизить нагрузку при повторных попытках. Полезно разделять очереди по типам задач и изолировать тяжелые сообщения. Воркеры должны корректно обрабатывать исключения и не падать полностью.
Чтобы “плохие” сообщения не блокировали обработку, применяют несколько архитектурных паттернов.
Схема:
сообщение не обработалось
отправляется в retry-очередь
через TTL возвращается обратно
Плюсы:
снижает нагрузку
дает время на восстановление зависимостей
Используется для:
сообщений, превышающих лимит попыток
сообщений с некорректным форматом
Это предотвращает бесконечный цикл повторной доставки.
Подход:
разные очереди для разных типов задач
тяжелые задачи не мешают легким
Настройка:
prefetch
количество воркеров
Это предотвращает захват всей очереди проблемными задачами.
Если внешняя система недоступна:
временно прекращают запросы
сообщения отправляются в retry
Вывод
Стратегия обычно комбинирует retry, DLQ, backoff и изоляцию очередей, что предотвращает блокировку пайплайна.