Heim >Java >javaLernprogramm >Wie kann man Aufträge mit einem festen Tarif im Frühjahr dynamisch planen?

Wie kann man Aufträge mit einem festen Tarif im Frühjahr dynamisch planen?

DDD
DDDOriginal
2024-11-27 20:21:11375Durchsuche

How to Dynamically Schedule Jobs with a Fixed Rate in Spring?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn