Регулирование потока не работает при создании из маршрута - PullRequest
0 голосов
/ 11 ноября 2018

Рассмотрим маршруты, содержащие все службы HTTP

val routes:Route = ...

Я хочу ограничить число запросов, поэтому я использовал Route.handleFlow(routes) для создания потока и вызвал метод регулирования с конечной продолжительностью.

Наконец, я создал HTTP-привязку, используя

Http().bindAndHandle(flowObjectAfterThrottling, hostname, port)

Когда HTTP-запросы запускаются из цикла, регулирование не выполняется akka.

1 Ответ

0 голосов
/ 11 ноября 2018

Одна из возможностей заключается в том, что http-запросы, «запускаемые из цикла», могут использовать отдельные соединения. Каждое входящее соединение регулируется с соответствующей скоростью, но совокупная пропускная способность выше ожидаемой.

Вместо этого используйте конфигурации

Вам не нужно писать программное обеспечение для установки предельных ставок для вашего Route.

Если вас интересует только использование ресурса, такого как диск или ОЗУ, вы можете удалить логику тарифа и использовать настройки конфигурации akka вместо этого:

# The maximum number of concurrently accepted connections when using the
# `Http().bindAndHandle` methods.
max-connections = 1024

# The maximum number of requests that are accepted (and dispatched to
# the application) on one single connection before the first request
# has to be completed.
pipelining-limit = 16

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

...