BACK
Use casesRate-limited queue — не душим backend
Use cases · 60

Rate-limited queue — не душим backend

Паттерн

External API имеет rate limit (например, 5 запросов в секунду). Bulk-операция (импорт 1000 строк) должна уважать этот лимит — отправлять последовательно, с фиксированной паузой.

Какую проблему решаем

Без контроля скорости bulk-действия положат backend или получат 429 Too Many Requests. Императивный for/await + sleep смешивает контроль скорости, error handling и бизнес-логику в одну сложную функцию.

Операторы и зачем они нужны

  • concatMap — гарантирует только один активный запрос. Следующий стартует после complete предыдущего.
  • delay(N) внутри inner stream — пауза между запросами.
  • map — создаёт результат обработки.

Подводные камни

  • mergeMap — нарушит лимит параллельностью. Backend получит N запросов одновременно.
  • switchMap — потеряет предыдущие items. Этого мы точно не хотим.
  • Для production 429 — читайте заголовок Retry-After вместо слепой постоянной задержки. Сервер сам знает, сколько ждать.

Что в итоге получаем

Backend получает запросы в стабильном темпе и порядке. Никаких 429 и DDoS-ов своих сервисов.

script.ts // TypeScript
CONSOLE · Console Output
Нажмите на запуск, чтобы увидеть результат...