在呼叫后几秒/分钟/小时后运行任务



Spring Boot是否具有允许在调用后几分钟运行任务的功能?

更新:发现Spring Boot具有ThreadPoolTaskScheduler。这允许在有时间延迟的情况下实现一次性任务执行。请参阅下面的答案

首先,我们需要定义一个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));
}

最新更新