У меня есть планировщик с методом:
@Scheduled(fixedDelay = 1000L)
public void sendRequest() {
client.getData(); //send request to some server
}
Каждую секунду мне нужно отправлять 50 запросов (звоните client.getData())
Как мне это сделать?
Этот пример очень плохой, но я пишу его, чтобы показать, что мне нужно:
@Scheduled(fixedDelay = 1000L)
public void sendRequest() {
for(int i=0; i<50; i++){
taskExecutor.execute(() -> client.getData()); //send request to some server
}
}
Или маби мне нужно создать 50 schedulers и каждый планировщик будет срабатывать каждую секунду?




@Scheduled(fixedDelay = 1000L)
Обработка аннотаций @Scheduled выполняется путем регистрации ScheduledAnnotationBeanPostProcessor. Бин-постпроцессор, который регистрирует методы, аннотированные @Scheduled, для вызова Планировщик задач в соответствии с выражением fixedRate, fixedDelay или cron, предоставленным через аннотацию. И здесь у нас есть история параллелизма. Если вы используете ThreadPoolTaskScheduler в качестве реализации TaskScheduler, буквально, у вас есть реализация интерфейса Spring TaskScheduler, обертывающего собственный ScheduledThreadPoolExecutor. Шаг за шагом мы приходим к Нитьs. Они требуют процессорного времени. Процессорное время - это ваша машина и ее конфигурация.
Вы можете использовать эту аннотацию для своих целей, но реальная производительность зависит от вашего компьютера, на котором развернуто приложение. Если конфигурация машины (ЦП и т. д.) Позволяет обрабатывать / отправлять 50 запросов ровно каждую секунду - милости просим. Если вы попытаетесь запустить 50 планировщиков как отдельные приложения на разных компьютерах, это также может решить вашу проблему.