2012-06-25 10 views
6

Ich bin nicht vertraut mit Java Quartz, wir haben nur einen Test-Job, der täglich geplant ist. Für unsere Struts2-Webapplikation möchten wir einige tägliche Jobs ausführen, die zu unterschiedlichen Tageszeiten geplant sind. Die Jobs sollten im Persistenzstatus sein, so dass sie selbst dann, wenn die Jobs aufgrund eines Serverausfalls/einer fehlgeschlagenen Anwendung fehlschlagen, später erneut ausgeführt werden sollten, wenn der Server betriebsbereit ist. Außerdem kann ich den Status/die Ergebnisse der Jobs in der DB speichern, um die Jobs zu überwachen. Irgendwelche Vorschläge wären hilfreich.JavaQuartz Job Persistenz

- Dank

+0

Ich glaube, Quarz hat all diese Eigenschaften. Es kann sicherlich einen persistenten Jobspeicher verwenden. – Thilo

Antwort

6

Was auch immer Sie erwähnt haben, ist möglich in Quarz-Scheduler und es gibt bereits ein Feature mit Auslöser, die wir in der Regel Misfire Instructions nennen das ist, was doc sagt über sie

Eine weitere wichtige Eigenschaft eines Auslösers seine „Fehlzündung Anweisung ". Eine Fehlzündung tritt auf, wenn ein persistenter Trigger seine Auslösezeit "vermisst", weil der Scheduler heruntergefahren wird oder weil keine verfügbaren Threads in Quarts Thread-Pool zur Ausführung des Jobs vorhanden sind. Die verschiedenen Trigger-Typen haben unterschiedliche Fehlzündungsanweisungen. Standardmäßig verwenden sie eine 'Smart Policy'-Anweisung - die basierend auf Triggertyp und Konfiguration dynamisches Verhalten aufweist. Wenn der Scheduler gestartet wird, sucht er nach permanenten Triggern, die fehlgelaufen sind, und aktualisiert sie dann auf der Grundlage ihrer individuell konfigurierten Fehlzündungsanweisungen. Wenn Sie Quartz in Ihren eigenen Projekten verwenden, sollten Sie sich mit den Fehlzündungsanweisungen vertraut machen, die für die angegebenen Triggertypen definiert sind und in ihrem JavaDoc erklärt werden. Weitere Informationen zu Fehlzündungsanweisungen finden Sie in den Lernprogrammen für die einzelnen Triggertypen.

In Bezug auf Job Ausdauer Quarz kommt mit wenigen eingebauten Mechanismus und alles, was Sie setzen müssen JobStore als JDBCJobStore

Ich schlage vor, Sie mit Quartz scheduler document seine ganz einfach zu gehen und haben eine Menge Tutorial und Beispiele für den Anfang.

Wenn Sie Spring nicht in Ihrer Anwendung verwenden, müssen Sie keine zusätzlichen Abstraktionsebenen und Abhängigkeiten hinzufügen.

+0

Nachdem ich die Dokumente durchgegangen bin, habe ich festgestellt, dass jobStore dafür verantwortlich ist, alle "Arbeitsdaten", die Sie dem Scheduler geben, zu verfolgen: Jobs, Trigger, Kalender, usw. Ist es möglich, den Job-Status auch im JobStore zu speichern , das Ergebnis/Ausführungsstatus .. –

+0

Sie können die Informationen auch erhalten –

+0

Beliebige bestimmte Lektion Nr. In der Dokumentation finden Sie Details zum Abrufen des Jobstatus eines Scheduler-Jobs. –

1

Wir haben Job stores api in Java Quarz. Dadurch bleiben Daten in den Datenbanken über die Informationen des Jobs erhalten. Also ich denke, das wird dir helfen. Sie können this link überprüfen, um eine Idee über Code und DB-Struktur zu bekommen.

2

Sie können Quarz kombiniert mit Sprig batch verwenden.

Die erste bietet API für die Verwaltung verschiedener Flüsse (so komplex wie Sie benötigen), persistente Speicherung von Job-Status und API für die Überwachung und erneute Ausführung von Aufträgen entsprechend ihrem Ausführungsstatus. Eine weitere nützliche Bibliothek ist Spring Batch admin. Es hat eine Webkonsole und 5 Minuten Anleitung.

Quartz wird als Scheduler Job-Status Persistenz wird von Spring Batch behandelt .. Es kann als eigenständige Java-Anwendung und auch in Web-/Anwendungscontainer (für mich Tomcat war genug) ausgeführt werden.

Viel Glück!

+0

Um das Spring Batch Admin zu verwenden, muss ich das Springs Framework in meiner bestehenden Struts2 Web-App verwenden. –

+0

Ja, Sie werden es brauchen. – aviad

+0

Ok, danke für deine Vorschläge. –