quartz 定时任务配置文件有五大要素,配置好这五大要素,quartz 就能够正常的工作。
五大要素分别是:
1、工作的 bean:具体是哪个 Java 类来作为定时任务的文件入口,并配置该 bean 依赖的 bean
2、工作的 method:也可以称为 job,用上面指定的 Java 类中哪个方法作为定时任务的方法入口,依赖第一要素的 bean
3、工作的 trigger:直译为触发器,定时任务执行的时间、频次等信息,依赖第二要素的 method(或者 job)
4、工作线程的配置:可以称为 taskExecutor,配置线程池大小等信息
5、工作的调度:哪些 trigger 需要工作、使用哪个 taskExecutor,依赖第三要素(trigger)和第四要素(taskExecutor)
下面分别开始介绍每个要素的配置详情
先给出执行的 Java 类代码 QuartzSrvBean.java
/** * 定时任务调度 */ public class QuartzSrvBean { private Logger logger = LoggerFactory.getLogger(QuartzSrvBean.class); private PreOrderMonitorService preOrderMonitorService; public void setPreOrderMonitorService( PreOrderMonitorService preOrderMonitorService) { this.preOrderMonitorService = preOrderMonitorService; } /** * 定时执行任务..... */ public void exec() { //记录定时任务日志 logger.info("xxxx定时任务开始执行-------------"); boolean isComplete = preOrderMonitorService.execUpdateTask(null); logger.info("xxxx定时任务isComplete:" + isComplete); } }
一、工作的 bean
<bean id="quartzSrvBean" class="com.xxx.yyy.common.QuartzSrvBean"> <property name="preOrderMonitorService" ref="preOrderMonitorService"></property> </bean>
二、工作的 method(也叫 job)
<!-- job的配置开始 --> <bean id="myJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <property name="targetObject" ref="quartzSrvBean"></property> <property name="targetMethod" value="exec"></property> </bean>
三、工作的 trigger
<bean id="myJobTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean"> <property name="jobDetail"> <ref bean="myJobDetail" /> </property> <property name="cronExpression"> <value>0/30 * * * * ?</value> </property> </bean>
cron 表达式生成可以用下面这个网页小工具:
http://cron.qqe2.com/
四、工作线程的配置(taskExecutor)
<!-- 配置线程的数量 --> <bean id="executor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor"> <property name="corePoolSize" value="1" /> <property name="maxPoolSize" value="1" /> <property name="queueCapacity" value="500" /> </bean>
五、工作的调度
<!-- 启动触发器 --> <bean name="startQuertz" id="startQuertz" lazy-init="false" autowire="no" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list> <ref bean="myJobTrigger" /> </list> </property> <property name="taskExecutor" ref="executor"></property> </bean>
原文链接: