Frage

Ich mag Hintergrundprozess parallel mit meiner Feder-mvc Web-Anwendung auszuführen. Ich muss einen Weg automatisch Kontext Laden starten in. Hintergrundprozess ist eine Klasse, die implementiert Runnable. Feder mvc hat einige Einrichtungen für das?

War es hilfreich?

Lösung

Frühling hat eine umfassende Aufgabenausführung Rahmen. Siehe relevanten Teil der docs .

Ich schlage vor, in Ihrem Kontext einen Spring-Bean mit, die, wenn sie initialisiert, Ihren Hintergrund Runnable Bohne zu einer SimpleAsyncTaskExecutor einreicht. Das ist der einfachste Ansatz, mit dem Sie können komplexere machen und in der Lage, wie Sie für richtig halten.

Andere Tipps

würde ich voran gehen und Blick auf die Aufgabenplanung Dokumentation von skaffman verbunden, aber es gibt auch einen einfacheren Weg, wenn alles, was Sie wirklich tun möchte, ist Feuer einem Hintergrund-Thread in Zusammenhang Initialisierungszeit.

<bean id="myRunnableThingy">
  ...
</bean>

<bean id="thingyThread" class="java.lang.Thread" init-method="start">
  <constructor-arg ref="myRunnableThingy"/>
</bean>

Als weitere Option kann man jetzt Spring Planungsfunktionen nutzen. Mit Frühlings 3 oder höher, hat es einen cron wie Anmerkung, die Sie Aufgaben planen, mit einer einfachen Kommentierung eines Verfahrens ausgeführt werden können. Es ist auch freundlich mit autowiring.

In diesem Beispiel plant eine Aufgabe für alle 2 Minuten mit einer anfänglichen Wartezeit (beim Start) von 30 Sekunden. Die nächste Aufgabe wird 2 Minuten nach Abschluss der Methode laufen! Wenn Sie es wollen, genau alle 2 Minuten laufen zu lassen, verwenden Sie fixedInterval statt.

@Service
public class Cron {
private static Logger log = LoggerFactory.getLogger(Cron.class);

@Autowired
private PageService pageService;

@Scheduled(initialDelay = 30000, fixedDelay=120000)  // 2 minutes
public void cacheRefresh() {
    log.info("Running cache invalidation task");
    try {

        pageService.evict();
    } catch (Exception e) {
        log.error("cacheRefresh failed: " + e.getMessage());
    }
}

}

Seien Sie sicher, auch @EnableAsync hinzufügen @EnableScheduling auf Ihre Anwendungsklasse diese Funktion zu aktivieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top