- Вызов БД для проверки возможности обновления данных.
- Http-запрос на внешний сервер, который возвращает список данных.
- Проверка и преобразование каждого элемента списка в модель предметной области.
- Повторный вызов внешнего сервера для подсписок исходного списка данных для получения дополнительной информации (вот в чем собственно проблема. И я никак не контролирую реакцию внешнего сервера).
- Сохранение результата в базе данных list.
- Сохранение метаданных о задаче в БД.
Это просто оставляет целое поток занят в зависимости от размера исходного списка примерно на 5-6 минут. Мне было интересно, могу ли я как-то изменить способ вызова внешнего сервера, например, запланировать вызов запросов на основе ограничения количества оборотов в минуту.
Любая помощь будет оценена по достоинству.
Редактировать. Я программно планирую задачу с помощью Spring ThreadPoolTaskScheduler. Метод update — это задача, которую я выполняю.
public abstract class AbstractUpdateScheduler {
protected ThreadPoolTaskScheduler taskScheduler;
protected abstract void setTaskScheduler(ThreadPoolTaskScheduler taskScheduler);
public abstract void update();
public abstract String getCron();
@PostConstruct
private void execute() {
taskScheduler.schedule(this::update, new
CronTrigger(getCron()));
}
}
Подробнее здесь: https://stackoverflow.com/questions/783 ... read-sleep