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>
原文鏈接:
https://www.cnblogs.com/poterliu/p/11770831.html