# ADR-003: Rate Limiting Strategy for MOEX Client **Status:** Accepted **Date:** 2026-06-13 **Deciders:** Architect, Tech Lead ## Context MOEX ISS не документирует жёсткие лимиты на количество запросов, но массовые запросы могут привести к блокировке или ухудшению качества обслуживания. Backend является единственным клиентом MOEX и должен контролировать исходящий трафик. ## Decision Внедрить два механизма в MoexClient: 1. **Request Queue (p-queue)**: конфигурируемый лимит запросов в секунду (default: 10 req/s). Запросы сверх лимита ставятся в очередь и выполняются по расписанию. 2. **Circuit Breaker (`@nestjs/axios` + interceptor)**: при 5+ последовательных ошибках (5xx, timeout, network error) клиент перестаёт отправлять запросы к MOEX на 30 секунд. После таймаута — пробный запрос для восстановления. ## Consequences - Плавная нагрузка на MOEX, без пиков - Автоматическое восстановление после сбоев MOEX - Graceful degradation: при отключённом circuit breaker возвращаются кешированные данные - Параметр конфигурации `MOEX_RATE_LIMIT` (int, req/s)