Jobs im Frühjahr dynamisch planen
Hintergrund:
Die Spring Scheduling-Bibliothek vereinfacht den Prozess der Planung von Aufgaben in regelmäßigen Abständen mithilfe von Anmerkungen (@Scheduled). Manchmal ist es jedoch erforderlich, die geplante Zeit dynamisch anzupassen, ohne die Anwendung erneut bereitzustellen. Dies kann mit dem Trigger-Mechanismus erreicht werden.
Verwendung eines Triggers:
Mit einem Trigger können Sie die nächste Ausführungszeit einer geplanten Aufgabe im Handumdrehen berechnen. Dieser Ansatz umgeht die Einschränkungen der Verwendung von Anmerkungen für die dynamische Planung. So können Sie es implementieren:
Beispiel:
In diesem Beispiel wird ein benutzerdefinierter Trigger erstellt, um die nächste Ausführungszeit basierend auf einem von erhaltenen Eigenschaftswert dynamisch zu bestimmen die Umgebung.
@Configuration @EnableScheduling public class MyAppConfig implements SchedulingConfigurer { @Autowired Environment env; @Bean public MyBean myBean() { return new MyBean(); } @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().getSchedule(); } }, new Trigger() { @Override public Date nextExecutionTime(TriggerContext triggerContext) { Calendar nextExecutionTime = new GregorianCalendar(); Date lastActualExecutionTime = triggerContext.lastActualExecutionTime(); nextExecutionTime.setTime(lastActualExecutionTime != null ? lastActualExecutionTime : new Date()); nextExecutionTime.add(Calendar.MILLISECOND, env.getProperty("myRate", Integer.class)); // Obtain value programmatically return nextExecutionTime.getTime(); } } ); } }
In dieser Konfiguration:
Durch die Verwendung eines Triggers können Sie die geplante Zeit basierend auf jeder zur Laufzeit verfügbaren Logik oder Werten dynamisch anpassen und so Flexibilität und Kontrolle über die Aufgabe bieten Terminplanung.
Das obige ist der detaillierte Inhalt vonWie kann ich Jobs im Frühjahr dynamisch planen, ohne sie erneut bereitzustellen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!