5 Stimmen

Dynamische Jobplanung mit Spring 3

Ich habe einen Webcrawler entwickelt, der mit der Start-URL als Seed-Parameter crawlt. Ich möchte den Benutzern ermöglichen, diese Aufgabe gegebenenfalls in Form eines Jobs zu planen.

Derzeit verwende ich Spring 3.1.2 und Hibernate. Ich muss den Benutzern eine Front-End geben, das CronJob-Parameter erhält, und basierend darauf möchte ich den Crawler ausführen. Ist es möglich, das mit Spring zu tun?

Ich habe ein wenig über Quartz gelesen, aber die Artikel auf SO oder anderen Websites sind überhaupt nicht klar oder sie sind nicht vollständig, um zu verstehen, wie man einen Zeitplaner in Spring implementiert.

Ich weiß grundlegend, dass es drei Komponenten gibt

  1. SchedulerFacotry
  2. Trigger
  3. Job (Service zum Ausführen)

Ich hoffe, jemand kann mich in die richtige Richtung lenken.

9voto

Tomasz Nurkiewicz Punkte 322861

Der Quartz-Scheduler ist genau das richtige Werkzeug für den Job. Aus irgendeinem Grund konzentrieren sich fast alle Tutorials darauf, Jobs beim Start in XML zu definieren - obwohl Quartz vollständig in der Lage ist, Jobs zur Laufzeit neu zu planen.

Sie können und sollten Spring nutzen, um den Quartz-Scheduler zu starten, aber dann können Sie direkt von Ihrem Code aus damit interagieren. Hier ist ein einfaches Beispiel aus der Dokumentation:

JobDetail job = newJob(SimpleJob.class)
    .withIdentity("job1", "group1")
    .build();

CronTrigger trigger = newTrigger()
    .withIdentity("trigger1", "group1")
    .withSchedule(cronSchedule("0/20 * * * * ?"))
    .build();

scheduler.scheduleJob(job, trigger);

Hier definieren Sie ein Job (ein Stück Java-Code, das ausgeführt werden soll), einen Trigger (wann er ausgeführt werden soll, der Benutzer kann einen beliebigen gültigen CRON-Ausdruck angeben) und planen das Ganze, indem Sie es planen. Die Scheduler-Instanz kann von Spring injiziert werden. Spring wird auch ein ordnungsgemäßes Herunterfahren behandeln.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X