Ho studiato come modificare la frequenza di un lavoro in runtime con Java 8 e Spring. This question è stato molto utile ma non ha risolto completamente il mio problema.Come riavviare l'attività pianificata in runtime con l'annotazione EnableScheduling in primavera?
Ora posso configurare la data in cui il lavoro deve essere eseguito successivamente. Ma se imposta il ritardo su 1 anno, allora devo aspettare 1 anno prima che la nuova configurazione venga presa in considerazione.
La mia idea sarebbe quella di interrompere l'attività pianificata se il valore di configurazione è cambiato (quindi da un'altra classe). Quindi ricalcolare la prossima volta che l'attività dovrebbe essere eseguita. Forse c'è un modo più semplice per farlo.
Ecco il codice che ho finora.
@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();
}
}
);
}
}
Questo sarebbe quello che mi piacerebbe fare.
@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";
}
}
Hey +1 per la tua domanda. Sei abituato alla primavera. oppure u bisogno di me per illustrare la codifica primavera anche ?? –