2013-03-10 47 views
9

是否可以在JodaTime中創建日期,然後使用JodaTime對象使Quartz安排作業?我們可以給石英API一段時間jodaPeriod以便在一天中的特定時間段內運行任務嗎?Quartz API和Joda Time API之間的任何關係?

這兩個API是否以任何方式相關和/或兼容?

+0

您是否想要按Joda時間段指定的時間間隔重複安排工作? – darrenmc 2013-03-19 12:03:21

+0

@darrenmc - 不只是那個用例。我希望能夠做石英可以做的所有事情,但最好使用喬達。 – 2013-03-23 08:00:18

回答

2

AxonFramework有一個QuartzEventScheduler,它看起來像它做你想做的。

這是downlaod page,它在Apache 2.0許可下。

+0

CQRS(Axon是一個CQRS框架)是命令查詢責任隔離 - http://martinfowler.com/bliki/CQRS.html – 2013-03-23 07:52:23

+0

Edd-你能給我更多的例子嗎?看起來這個框架只使用Quartz和joda的一小部分。似乎沒有支持在某個Joda期間或持續時間之後重複執行任務。我正在尋求兩者之間的更多整合。 – 2013-03-23 08:03:30

2

Quartz提供了一個非常全面的API,您可以隨意擴展。
您需要創建的鉤子將與Trigger接口相反,我之前創建了一個但未使用Joda時間。

從你的問題的聲音,如果你想創建一個在一天中的特定時期運行的工作,你也可以嘗試使用CronTrigger。例如運行上午9點和11點之間的每一分鐘,你可以做

* 9-10 * * * 

顯然喬達使得它更容易配置,但您的系統管理員更加尊重你的cron的...

2

我已經開始使用喬達時間在我公司的應用程序的新部分中,我發現通過將Joda Time對象轉換回舊部件仍然期待的java.util.Date,可以更輕鬆地鏈接到舊部件(包括Quartz調度)。我希望這有幫助。

+0

是的,但這是手動。但是,我想避免日期,因爲它大部分已被棄用,並可能喬達將取代當前的時間系統。 – 2013-03-23 07:48:32

+1

JSR-310(threeten)https://github.com/ThreeTen/threeten將在Java 8中增加日期而不是Joda。它們有相似之處,但在Joda上也有很多改進。例如, – Jim 2013-05-16 07:14:35

2

TriggerBuilder對如何手工調度作業的一個片段:

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

你將不得不做的startAt(一些轉換工作)和withIntervalInHours()...你的漂移

+0

+1。我希望Quart會增加一些內置的joda支持。否則,我將不得不手動進行所有轉換和字段提取。 – 2013-03-23 07:46:32