Apache HttpClient: ограничение общего количества вызовов в секунду

Мне нужно ограничить количество вызовов HTTP в секунду максимум до 10. Это соответствует разрешенной квоте.

Есть ли у HttpClient какая-то функция для этого? Или любая пользовательская реализация также подойдет.


person Vipul    schedule 05.01.2017    source источник


Ответы (1)


Вы можете попробовать ScheduledThreadPoolExecutor.

Из javadoc:

ThreadPoolExecutor, который может дополнительно планировать выполнение команд после заданной задержки или периодическое выполнение.

Вы просто использовали бы schedule и передайте ему Runnable, где Runnable делает ваш вызов через метод HttpClient. Вы можете запланировать запуск Runnable 10 раз в секунду или по мере необходимости. Executor поставит ваши звонки в очередь поверх HttpClient и будет выполнять не более 10 вызовов в секунду.

person StvnBrkdll    schedule 05.01.2017
comment
Вызовы HTTP в моем сценарии не могут быть одновременными. Все они должны быть последовательно один за другим. Использование ScheduledThreadPoolExecutor будет запускать разные потоки параллельно. - person Vipul; 07.01.2017
comment
установите конструктор аргумент maxPoolSize равен единице. Параллельных потоков не будет. Поочередно вызовите setMaxPoolSize() . - person StvnBrkdll; 07.01.2017