Я делаю проект Spring Boot
это основной класс
@SpringBootApplication
@ComponentScan(basePackages="blabla.quartz")
@EnableScheduling
public class App
{
public static void main( String[] args )
{
ConfigurableApplicationContext context =SpringApplication.run(App.class, args);
}
}
это контроллер
@RestController
public class Controller {
@Autowired
private SampleTask m_sampletask;
@Autowired TaskScheduler taskScheduler;
ScheduledFuture scheduledFuture;
int jobid=0;
@RequestMapping(value = "start/{job}", method = RequestMethod.GET)
public void start(@PathVariable String job) throws Exception {
m_sampletask.addJob(job);
Trigger trigger = new Trigger(){
@Override
public Date nextExecutionTime(TriggerContext triggerContext) {
org.quartz.CronExpression cronExp=null;
CronSequenceGenerator generator = new CronSequenceGenerator("0 * * ? * *");
Date nextExecutionDate = generator.next(new Date());
System.out.println(nextExecutionDate);
return nextExecutionDate;
}
};
scheduledFuture = taskScheduler.schedule(m_sampletask, trigger);
}
}
Это реализация ScheduleConfigurer
@Service
public class MyTask implements SchedulingConfigurer{
@Bean
public TaskScheduler taskScheduler() {
ThreadPoolTaskScheduler scheduler = new ThreadPoolTaskScheduler();
scheduler.setThreadNamePrefix("somegroup-");
scheduler.setPoolSize(10);
scheduler.setWaitForTasksToCompleteOnShutdown(true);
scheduler.setAwaitTerminationSeconds(20);
return scheduler;
}
@Override
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
}
}
Это класс, который я вызываю из контроллера как запланированное задание.
@Component
public class SampleTask implements Runnable{
private List<String> jobs=new ArrayList<String>();
private String jobName;
public void addJob(String job){
jobName=job;
}
@Override
public void run() {
System.out.println("Currently running "+jobName);
}
}
Как остановить запланированное задание с помощью конечной точки отдыха (предположим, «/stop/{jobname}»). Когда я запустил задание, используя конечную точку отдыха «/start/{jobname}»?