Выполнить задачу через несколько секунд / минут / часов после звонка - PullRequest
0 голосов
/ 03 декабря 2018

Есть ли в Spring Boot что-то, что позволяет запускать задачу спустя несколько минут после вызова?

Обновление: обнаружено, что Spring Boot имеет ThreadPoolTaskScheduler.Это позволяет реализовать одноразовое выполнение задачи с задержкой.Смотрите ответ ниже

1 Ответ

0 голосов
/ 03 декабря 2018

Во-первых, нам нужно определить Bean

@Bean
public ThreadPoolTaskScheduler getScheduler(){
    ThreadPoolTaskScheduler scheduler = new ThreadPoolTaskScheduler();
    scheduler.setPoolSize(10);
    return scheduler;
}

Задача, которую необходимо выполнить

public class WakeUpCallTask implements Runnable {

    private String parameter1;

    private String parameter2;

    public WakeUpCallTask(String parameter1, String parameter2) {
        super();
        this.parameter1= parameter1;
        this.parameter2= parameter2;
    }

    @Override
    public void run() {
        // Code that should be executed
    }

}

Пример конечной точки - планирование задачи в 10000ms

@Autowired
ThreadPoolTaskScheduler scheduler;

@PostMapping(value = "/wake-me-up", consumes = "application/json")
@ResponseStatus(HttpStatus.OK)
public void scheduleCall(@RequestBody WakeMeUpRequest request) {
    scheduler.schedule(
            new WakeUpCallTask(request.getParameter1(), request.getParameter2()),
            new Date(System.currentTimeMillis() + 10000));
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...