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;
}