我们正在构建一个大约
MongoDB的应用程序,并且需要定期运行类似cron的作业.当项目基于带有JDBC的RDBMS时,我之前使用过
Quartz这样的事情.
由于我们已经在本项目中使用MongoDB作为我们的主数据存储区,因此我不想仅仅为了保留Quartz作业而引入RDBMS,但似乎没有任何类型的JobStore实现MongoDB.
任何人都可以推荐使用MongoDB支持Quartz的方法,或者Quartz的简单替代方法吗?我的需求相当简单(使用某种配置方式运行各种java作业,àlacron).
解决方法
我们用Spring运行石英,它只是一个带有作业定义和cron表达式的XML文件.
在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"); } }