advanced

Retry queues

Используйте bounded retry queues или delayed retries с backoff, attempt metadata, observability и final failure path.

Retry-очереди откладывают повторную обработку после сбоя. Задержку делайте через TTL и hop в DLX, отдельные delay-очереди или плагины брокера — избегайте плотных циклов, бьющих по downstream. Храните число попыток, время первого сбоя и последнюю ошибку в заголовках или отдельной таблице.

Ограничьте максимум попыток и направляйте исчерпанные сообщения в dead-letter для ручного разбора. Экспоненциальный backoff с jitter размазывает retry-шторм после аварий. Политика retry должна быть явной по типу сообщения: платежи и email-уведомления ведут себя по-разному.

На интервью: нарисуйте трёхступенчатую retry-лестницу, объясните роль jitter и определите, когда повтор не нужен.

Типовые ошибки: бесконечные retry poison-сообщений; повтор неидемпотентных эффектов без дедупликации; фиксированная задержка и синхронный thundering herd; отсутствие видимости глубины retry.

Компромисс — гибкость против сложности: знайте, когда достаточно более простого пути.

Чеклист:

  • Лимит попыток на тип сообщения.
  • Backoff с jitter.
  • Сохранение метаданных попыток.
  • Исчерпание → DLQ с контекстом.