Я работаю над приложением Springboot, которое включает задачу, выполняемую по расписанию. Обычно запуск занимает около двух-трех минут.
@Scheduled(cron = "* */30 * * * *")
public void stageOfferUpdates() throws SQLException {
...
}
У нас есть требование иметь возможность начать выполнение этой задачи в любое время, вызвав конечную точку отдыха. Есть ли способ, которым мой метод @GET
может программно запустить это и немедленно вернуть http 200 OK
?
Не могли бы вы просто запустить метод в другом потоке:
executor.execute(() -> {
stageOfferUpdates();
}
а затем продолжить и вернуть 200?
Это своего рода мой вопрос ... это правильный способ сделать это? Или есть что-то в Spring, что считается предпочтительным? Я гуглил это, но не нашел ничего особенно полезного. Во всяком случае, это, вероятно, то, что я сделаю. Спасибо!
Ну вы получили свой ответ, я думаю :)
Итак, вы просто хотите запустить асинхронную задачу, не дожидаясь результатов. Поскольку вы используете Spring, аннотация @Async — это простой способ достичь цели.
@Async
public void asyncTask() {
stageOfferUpdates();
}
Просто вызвать метод?