Badałem, jak zmienić częstotliwość pracy w środowisku wykonawczym z Java 8 i wiosną. This question był bardzo przydatny, ale nie rozwiązało to całkowicie mojego problemu.Jak zrestartować zaplanowane zadanie w środowisku wykonawczym z włączoną adnotacją EnableScheduling na wiosnę?
Mogę teraz skonfigurować datę, kiedy zadanie powinno zostać wykonane dalej. Ale jeśli ustawię opóźnienie na 1 rok, to muszę poczekać 1 rok, zanim nowa konfiguracja zostanie wzięta pod uwagę.
Mój pomysł polegałby na zatrzymaniu zaplanowanego zadania, jeśli wartość konfiguracji zostanie zmieniona (czyli innej klasy). Następnie przeliczyć ponownie przy następnym wykonaniu zadania. Być może jest łatwiejszy sposób robienia tego.
Oto kod, który do tej pory miałem.
@Configuration
@EnableScheduling
public class RequestSchedulerConfig implements SchedulingConfigurer {
@Autowired
SchedulerConfigService schedulerConfigService;
@Bean
public RequestScheduler myBean() {
return new RequestScheduler();
}
@Bean(destroyMethod = "shutdown")
public Executor taskExecutor() {
return Executors.newScheduledThreadPool(100);
}
@Override
public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
taskRegistrar.setScheduler(taskExecutor());
taskRegistrar.addTriggerTask(
new Runnable() {
@Override public void run() {
myBean().startReplenishmentComputation();
}
},
new Trigger() {
@Override public Date nextExecutionTime(TriggerContext triggerContext) {
Duration d = schedulerConfigService.getIntervalFromDB();
return DateTime.now().plus(d).toDate();
}
}
);
}
}
To byłby to, co chciałbym zrobić.
@RestController
@RequestMapping("/api/config/scheduler")
public class RequestSchedulerController {
@Autowired
ApplicationConfigWrapper applicationConfigWrapper;
@RequestMapping("/set/")
@ResponseBody
public String setRequestSchedulerConfig(@RequestParam(value = "frequency", defaultValue = "") final String frequencyInSeconds){
changeValueInDb(frequencyInSeconds);
myJob.restart();
return "Yeah";
}
}
Hej +1 za twoje pytanie. Znasz wiosnę. czy chcesz mi również zilustrować kodowanie sprężynowe? –