Heim >Java >javaLernprogramm >Wie kann ich Jobs mit dynamisch anpassbaren Festpreisen im Frühjahr einplanen?

Wie kann ich Jobs mit dynamisch anpassbaren Festpreisen im Frühjahr einplanen?

Susan Sarandon
Susan SarandonOriginal
2024-11-27 15:27:11970Durchsuche

How Can I Schedule Jobs with Dynamically Adjustable Fixed Rates in Spring?

Jobs mit benutzerdefinierten Festpreisen mit Spring planen

Spring bietet eine praktische Möglichkeit, Jobs mithilfe von Anmerkungen zu planen. Allerdings kann es manchmal erforderlich sein, den Festpreis dynamisch festzulegen. Dieser Artikel stellt eine Lösung vor, die den Trigger-Mechanismus von Spring verwendet.

Aktueller annotationsbasierter Ansatz

Standardmäßig können Sie @Scheduled mit FixedRate verwenden, um den Zeitraum zwischen Ausführungen anzugeben. Diese Rate ist jedoch statisch und kann nicht geändert werden, ohne die Anwendung erneut bereitzustellen.

Lösung: Verwenden eines Triggers

Anstatt sich auf Anmerkungen zu verlassen, können Sie einen benutzerdefinierten Trigger konfigurieren das die nächste Ausführungszeit basierend auf einem dynamisch berechneten Wert berechnet. So können Sie das erreichen:

1. Implementieren Sie eine Scheduling-Konfiguration

Erstellen Sie eine Konfigurationsklasse, die der SchedulingConfigurer-Schnittstelle folgt. Diese Klasse überschreibt den Standardplaner und registriert Ihren benutzerdefinierten Auslöser.

@Configuration
@EnableScheduling
public class MyAppConfig implements SchedulingConfigurer {
    // ...
}

2. Definieren Sie einen Trigger

Implementieren Sie einen Trigger, der die nächste Ausführungszeit zurückgibt. In diesem Beispiel berechnen wir das nächste Mal basierend auf der in Ihrer Umgebung gespeicherten myRate-Eigenschaft.

@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)); //you can get the value from wherever you want
    return nextExecutionTime.getTime();
}

3. Registrieren Sie den Auslöser

Registrieren Sie in Ihrer Planungskonfigurationsklasse den Auslöser für Ihre Aufgabe.

public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
    // ...
    taskRegistrar.addTriggerTask(
        new Runnable() {
            @Override
            public void run() {
                myBean().getSchedule();
            }
        },
        new Trigger() {
            // ... (Your trigger implementation)
        }
    );
}

Mit diesem Ansatz können Sie die feste Rate für Ihre geplanten Jobs dynamisch festlegen , sodass Sie es anpassen können, ohne Ihre Anwendung erneut bereitzustellen.

Das obige ist der detaillierte Inhalt vonWie kann ich Jobs mit dynamisch anpassbaren Festpreisen im Frühjahr einplanen?. 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