advanced

Poison messages

Detect messages, которые repeatedly fail из-за bad data, schema mismatch или unrecoverable business state, и stop retry storms.

Poison-сообщения падают при каждой попытке из-за битого payload, несовместимости схемы, отсутствующих данных или бага в логике — а не из-за transient-сбоев инфраструктуры. Без детекции они жрут CPU, блокируют partition и запускают retry-штормы, усиливающие аварии.

Обнаруживайте poison по счётчику попыток, классификации ошибок и circuit breaker при повторяющихся одинаковых сбоях. Быстро переносите в DLQ после небольшого фиксированного лимита. Исправляйте через версионирование схемы и валидацию на входе до постановки в очередь.

На интервью: разделите transient и poison сбои, объясните, как одно плохое сообщение стопорит очередь, и опишите нужные алерты.

Типовые ошибки: бесконечный retry ошибок валидации; нет проверки совместимости схем producer и consumer; общая политика retry для всех ошибок; операторы не видят проблему среди обычных retry.

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

Чеклист:

  • Классифицируйте ошибки: transient или permanent.
  • Ограничьте retry и быстро направляйте poison в DLQ.
  • Валидируйте payload до enqueue.
  • Алерт на повторяющиеся одинаковые сигнатуры сбоев.