Quartz是由java编写的开源作业调度框架,其核心就是调度器。Quartz的实现非常简单,创建一个实现org.quartz.Job接口的java类。这个接口包含唯一的方法:
public void execute(JobExecutionContext context)
throws JobExecutionException;
在自己的实现类里面,添加一些处理逻辑到execute()方法。一旦你配置好Job实现类并设定好调度时间表,Quartz就可以在指定的时间执行相应的动作。
这里我们用一个简单地例子初步了解Quartz,我们要实现一个定时发送邮件的功能,这个逻辑用Quartz来处理非常的简单。首先我们需要建一个JOB类,这个类的逻辑是当到达指定的时间的时候就发送邮件。这样的逻辑应该很简单这里就不具体说明了。接下来我们要做的就是用Quartz任务调度来执行这个类,我们可以设置调度时间例如每隔一分钟去扫描一次,一旦符合JOB类中的情况就会做出相应的动作,达到定时发送邮件的效果。
本文主要是利用Spring来集成Quartz。我们只需要在Spring中配置相应的Trigger和Job,Spring在找到这些bean后会自动启动这些Job。下面是一些配置信息:
<!-- 要调用的工作类 class中的类即为我们刚刚建的JOB类 --> <bean id="quartzJob" class="com.job.quartz.QuartzJob"> <property name="sqlMap" ref="sqlMapClient" /> </bean>
<!-- 定义调用对象和调用对象的方法 --> <bean id="jobtask" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <!-- 调用的类 --> <property name="targetObject"> <ref bean="quartzJob"/> </property> <!-- 调用类中的方法 --> <property name="targetMethod"> <value>exec</value> </property> </bean> <!--定义执行的时间 它定义了quartzJob何时被调用。 --> <bean id="doTime" class="org.springframework.scheduling.quartz.CronTriggerBean"> <property name="jobDetail"> <ref bean="jobtask"/> </property> <!-- 时间的表达式 --> <property name="cronExpression"> <value>0 0 12 * * ?value> </property> </bean> <!-- 如果将lazy-init='false' 那么容器在启动的时候就会执行调度程序 --> <bean id="startQuartz" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean" lazy-init="false"> <property name="triggers"> <list> <ref bean="doTime"/> </list> </property> </bean>通过以上的配置再加上我们的JOB类就可以利用Quartz轻松的实现定时发送邮件的效果了!