intermediate

Очереди

Сглаживайте пики и отделяйте медленную работу очередями: concurrency consumers, retries, dead-letter и идемпотентные jobs.

Очереди отделяют producers от медленных consumers — сглаживают пики, ретраят работу и изолируют failure domains. Примеры: SQS, RabbitMQ, BullMQ, Kafka (log-oriented).

| Задача | Практика | |--------|----------| | Concurrency | Лимит parallel consumers на очередь | | Retries | Exponential backoff + max attempts | | DLQ | Poison messages на разбор | | Idempotency | Handlers безопасны при duplicate delivery |

					API → enqueue job → Worker pool → side effects (email, PDF, webhook)
				

Мониторьте **queue depth** и **возраст старейшего сообщения** — lag сигнал масштабируемости. Масштабируйте consumers при росте lag, не только при высоком CPU.

На интервью: at-least-once vs exactly-once; ordering; backpressure при неограниченной очереди; идемпотентные payment handlers.

Типовые ошибки: неограниченная очередь скрывает overload; нет DLQ; consumers быстрее, чем выдерживает downstream БД.

Компромисс — устойчивость и эластичность против eventual consistency и мониторинга.

Чеклист:

  • Ограниченные retries с DLQ.
  • Идемпотентные consumers с dedupe keys.
  • Алерт на lag и oldest-message age.
  • Concurrency consumers под ёмкость downstream.