2011-01-25 63 views
7

我們正在構建一個圍繞MongoDB的應用程序,並且需要定期運行類似cron的作業。當項目是基於RDBMS和JDBC的時候,我以前使用過Quartz這種類型的東西。使Quartz調度器在沒有JDBC的情況下持久化

因爲我們已經在這個項目中使用了MongoDB作爲我們的主數據存儲,所以我寧願不引入RDBMS來保存Quartz作業,但似乎沒有任何種類的MongoDB實現。

任何人都可以推薦一種方法來回到Quartz與MongoDB,或Quartz的簡單替代?我的需求相當簡單(使用某種配置方式運行各種java作業,àla cron)。

+0

我不知道任何這樣的產品,但是我之前從未聽說過Quartz。鑑於有一個明確的[JobStore](http://www.docjar.com/docs/api/org/quartz/spi/JobStore.html)接口,您似乎應該能夠使用MongoDB Java驅動程序並實施這樣的商店。不如「自由和工作」,但我不確定你會在這個時間點找到這樣的事情。 – 2011-01-26 00:02:18

+0

實現JobStore接口對於Quartz是可選的 - 只需要(1)您在羣集環境中運行,或者(2)使用需要在JVM重新啓動之間保留的持久性作業屬性。否則,只需實例化調度程序並在啓動時添加作業。 – 2011-01-26 05:06:10

回答

3

我們用Spring運行石英,它只是一個XML文件,其中包含定義的作業和cron表達式。

在Spring聲明任務:

<bean name="myJob" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> 
    <property name="concurrent" value="false"/> 
    <property name="targetBeanName" value="myBean"/> 
    <property name="targetMethod" value="myScheduledMethod"/> 
    </bean> 

    <bean id="myJobTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean"> 
    <property name="jobDetail" ref="myJob"/> 
    <!-- every 30s --> 
    <property name="cronExpression" value="0/30 * * * * ?"/> 
    </bean> 

石英接線:

<bean id="schedulerFactoryBean" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> 
    <property name="triggers"> 
     <!-- List of batch jobs to be fed to the scheduler. --> 
     <list> 
     <ref bean="myTrigger"/> 
     </list> 
    </property> 
    </bean> 

與運行:

import org.springframework.context.support.ClassPathXmlApplicationContext; 

public class App 
{ 
    public static void main(String[] args) throws Exception 
    { 
     new ClassPathXmlApplicationContext("jobs-context.xml"); 
    } 
} 
+0

這或多或少是我所定下的。我們沒有使用Spring,所以我只需將我的quartz.properties指向quartz-config.xml文件,如下所述:http://www.openscope.net/2010/02/05/quartz-scheduled-jobs/ 謝謝你指點我在正確的方向。 – 2011-01-26 04:13:31

相關問題