stop Spring Geplante Ausführung, wenn es nach einer festgelegten Zeit hängt

Ich habe Spring Framework's @ verwendScheduled, um meinen Job so zu planen, dass er alle 5 Minuten mit cron ausgeführt wird. Aber irgendwann wartet mein Job unendlich lange auf eine externe Ressource und ich kann dort keine Auszeit setzen. Ich kann @ nicht verwendfixedDelay als vorheriger Prozess geht irgendwann in den Wartemodus und ich muss alle 5 Minuten Daten aktualisieren.

So suchte ich eine Option in Spring Framework'sScheduled um diesen Prozess / Thread nach einem @ zu stoppfixed-time entweder läuft es erfolgreich oder nicht.

Ich habe unten Einstellung gefunden, die @ initialisieThreadPoolExecutor mit 120 Sekunden fürkeepAliveTime was ich in@Configuration Klasse. Kann mir jemand sagen, ob dies so funktioniert, wie ich es erwartet habe.

@Bean(destroyMethod="shutdown")
public Executor taskExecutor() {
    int coreThreads = 8;
    int maxThreads = 20;
    final ThreadPoolExecutor threadPoolExecutor = new ThreadPoolExecutor(
            coreThreads, maxThreads, 120L, 
            TimeUnit.SECONDS, new LinkedBlockingQueue<Runnable>()
    );
    threadPoolExecutor.allowCoreThreadTimeOut(true);

    return threadPoolExecutor;
}

Antworten auf die Frage(6)

Ihre Antwort auf die Frage