Heim >Java >javaLernprogramm >Wie kann man Aufträge mit einem festen Tarif im Frühjahr dynamisch planen?
So planen Sie einen Job mit Spring programmgesteuert mit dynamisch festgelegter fester Rate
In Spring können Aufgaben mithilfe von Annotationen wie @Scheduled geplant werden. Wenn der feste Tarif jedoch dynamisch geändert werden muss, ohne die Anwendung erneut bereitzustellen, ist ein anderer Ansatz erforderlich.
Eine Lösung ist die Verwendung eines Triggers. Mit einem Trigger können Sie die nächste Ausführungszeit im Handumdrehen basierend auf einer benutzerdefinierten Logik berechnen.
Hier ist ein Beispiel für die Konfiguration eines Trigger-basierten Jobs mithilfe des ScheduledTaskRegistrar:
@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)); //Get the value dynamically return nextExecutionTime.getTime(); } } ); } }
Dadurch können Sie den Festpreis mithilfe der Umgebungseigenschaft dynamisch festlegen. Die myRate-Eigenschaft kann aus jeder Quelle abgerufen werden, beispielsweise aus einer Datenbank oder einer Konfigurationsdatei.
Das obige ist der detaillierte Inhalt vonWie kann man Aufträge mit einem festen Tarif im Frühjahr dynamisch planen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!