Рецепты

Ограничение через Rate Limit

Ограничьте число допущенных Command для группы и скользящего окна без ожидания квоты.

v0.1.0-dev.2Средний уровеньusecase_forge

Ограничение через Rate Limit

Rate Limit нужен, когда ресурс допускает ограниченное число Command в скользящем временном окне. Лишние Command отклоняются сразу и не ждут освобождения квоты.

dart
registerCommand<SendVerificationCode>(
  _sendCode,
  instructions: UseCaseInstructionOverrides(
    input: UseCaseInputInstructionOverrides(
      rateLimit: UseCaseRateLimitInstructions(
        maxExecutions: 3,
        duration: const Duration(minutes: 10),
      ),
    ),
  ),
);

Задайте executionKey, например идентификатор аккаунта. Для каждой пары из точного типа Command и ключа действует своё окно. Квоту расходуют только Execution Entry, прошедшие предыдущие Input Instructions.

Обработайте границу

maxExecutions и duration должны быть положительными. Ошибка конфигурации возникает при регистрации. Отклонённый Command приходит в onCommandRejected с причиной rateLimitExceeded и не попадает в историю.

ARKTELOS

Инженерные системы для программного обеспечения, которое обязано выдерживать нагрузку.