2013-03-10 4 views
9

Ist es möglich, ein Datum in JodaTime zu erstellen und dann Quartz den Job mit dem JodaTime-Objekt zu planen? Können wir der Quartz-API eine Periode jodaPeriod geben, um eine Aufgabe für einen bestimmten Zeitraum an einem Tag auszuführen?Gibt es irgendeine Beziehung zwischen Quartz API und Joda Time API?

Sind die beiden APIs in irgendeiner Weise verwandt und/oder kompatibel?

+0

Möchten Sie einen Job so planen, dass er in einem von Joda festgelegten Zeitraum wiederholt wird? – darrenmc

+0

@darrenmc - nicht nur dieser eine Anwendungsfall. Ich möchte in der Lage sein, alles zu tun, was Quarz kann, aber vorzugsweise mit Joda. –

Antwort

2

Das AxonFramework hat eine QuartzEventScheduler, die aussieht, als ob Sie das tun, was Sie wollen.

Hier ist die downlaod page und es ist unter der Apache 2.0-Lizenz.

+0

CQRS (Axon ist ein CQRS-Framework) ist Befehl Query Responsibility Segregation - http://martinfowler.com/bliki/CQRS.html –

+0

Edd - können Sie mir einige weitere Beispiele wie diese geben? Sieht so aus, als ob dieser Rahmen nur einen kleinen Teil von Quarz und Joda verwendet. Es scheint keine Unterstützung zu geben, eine Aufgabe wiederholt nach einer bestimmten Joda- Periode oder -Dauer auszuführen. Ich war auf der Suche nach mehr Integration zwischen den beiden. –

2

Quartz bietet eine ziemlich umfassende API, die Sie beliebig erweitern können.
Der Haken, den Sie erstellen müssten, wäre gegen die Trigger Schnittstelle, ich habe eine vor, aber nicht mit Joda Zeit erstellt.

Von den Geräuschen Ihrer Frage, wenn Sie einen Job erstellen möchten, der für eine bestimmte Zeit des Tages ausgeführt wird, können Sie auch einfach versuchen, die CronTrigger verwenden. Zum Beispiel jede Minute 9.00 bis 11.00 Uhr laufen könnten Sie

* 9-10 * * * 

tun Offensichtlich Joda macht es viel einfacher zu konfigurieren, aber Ihre sysadmins respektieren Sie mehr für cron ...

2

ich Joda zu verwenden begonnen haben Zeit in neueren Teilen der App meines Unternehmens und ich fand es leichter, mit den alten Teilen (einschließlich der Quartz-Planung) zu verlinken, indem ich das Joda-Time-Objekt zurück in java.util.Date umwandelte, was die älteren Teile immer noch erwarten. Ich hoffe das hilft.

+0

ja, aber das ist manuell. Aber ich möchte das Datum vermeiden, da das meiste davon veraltet ist und es wahrscheinlich ist, dass Joda das aktuelle Zeitsystem ersetzen wird. –

+1

JSR-310 (drei) https://github.com/ThreeTen/threeten wird Datum statt Joda in Java 8. Sie haben Ähnlichkeiten, aber es gibt auch viele Verbesserungen in drei über Joda. – Jim

2

TriggerBuilder hat einen Ausschnitt, wie ein Job mit der Hand planen:

JobDetail job = newJob(MyJob.class) 
     .withIdentity("myJob") 
     .build(); 

Trigger trigger = newTrigger() 
     .withIdentity(triggerKey("myTrigger", "myTriggerGroup")) 
     .withSchedule(simpleSchedule() 
      .withIntervalInHours(1) 
      .repeatForever()) 
     .startAt(futureDate(10, MINUTES)) 
     .build(); 

scheduler.scheduleJob(job, trigger); 

Sie werden einige Umbauarbeiten für die startat() und die withIntervalInHours() zu tun haben ... Sie bekommen die Drift

+0

+1 für das Beispiel. Ich wünsche mir, dass Quart einige eingebaute joda-Unterstützung hinzufügt. Ansonsten muss ich die Konvertierung und Feldextraktion manuell vornehmen. –

Verwandte Themen