Мне нужно ограничить количество вызовов HTTP в секунду максимум до 10. Это соответствует разрешенной квоте.
Есть ли у HttpClient какая-то функция для этого? Или любая пользовательская реализация также подойдет.
Мне нужно ограничить количество вызовов HTTP в секунду максимум до 10. Это соответствует разрешенной квоте.
Есть ли у HttpClient какая-то функция для этого? Или любая пользовательская реализация также подойдет.
Вы можете попробовать ScheduledThreadPoolExecutor.
Из javadoc:
ThreadPoolExecutor, который может дополнительно планировать выполнение команд после заданной задержки или периодическое выполнение.
Вы просто использовали бы schedule
и передайте ему Runnable
, где Runnable
делает ваш вызов через метод HttpClient
. Вы можете запланировать запуск Runnable
10 раз в секунду или по мере необходимости. Executor
поставит ваши звонки в очередь поверх HttpClient
и будет выполнять не более 10 вызовов в секунду.
maxPoolSize
равен единице. Параллельных потоков не будет. Поочередно вызовите setMaxPoolSize() а>.
- person StvnBrkdll; 07.01.2017