java支配:(四) spring中使用quartz的配置文件.
java调度:(四) spring中使用quartz的配置文件.
quartz主要是三个部分:Scheduler Job Trigger,其中,Job 负责定义需要执行的任务,Trigger 负责设置调度策略,Scheduler 将二者组装在一起,并触发任务开始执行。Scheduler 可以通过SchedulerFactory来生成.
用spring封装后的quartz更简单,下面是一个具体的配置例子:
在其中job,用targetObject来指定任务类,可以是任意的spring bean,targetMethod指定任务执行的方法.Tigger一般用两种,CronTriggerBean和SimpleTriggerBean,一个triggerBean中可以配置多个job,一个Scheduler中可以配置多个trigger.
<!-- quartz定时调度执行 网站自动发现 begin --> <bean id="siteSearchJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <property name="targetObject"> <ref bean="websiteSearchEngine"/> </property> <property name="targetMethod"> <value>runWebsiteSearcher</value> </property> </bean> <bean id="siteSearchSimpleTrigger" class="org.springframework.scheduling.quartz.CronTriggerBean"> <property name="jobDetail"> <ref bean="siteSearchJobDetail"/> </property> <!--每15天执行一次 --> <property name="cronExpression" value="* * * */15 * ?" /> </bean> <bean id="siteSearchSfb" class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list> <ref bean="siteSearchSimpleTrigger"/> </list> </property> <property name="autoStartup"> <value>false</value> </property> <property name="quartzProperties"> <props> <prop key="org.quartz.scheduler.instanceName">DefaultQuartzScheduler</prop> <prop key="org.quartz.scheduler.rmi.export">false</prop> <prop key="org.quartz.scheduler.rmi.proxy">false</prop> <prop key="org.quartz.scheduler.wrapJobExecutionInUserTransaction">false</prop> <prop key="org.quartz.threadPool.class">org.quartz.simpl.SimpleThreadPool</prop> <prop key="org.quartz.threadPool.threadCount">1</prop> <prop key="org.quartz.threadPool.threadPriority">5</prop> <prop key="org.quartz.threadPool.threadsInheritContextClassLoaderOfInitializingThread">true</prop> <prop key="org.quartz.jobStore.misfireThreshold">60000</prop> <prop key="org.quartz.jobStore.class">org.quartz.simpl.RAMJobStore</prop> </props> </property> </bean> <!-- quartz定时调度执行 网站自动发现end -->
下面是一个simpleTigger的例子:
<bean id="mergeSimpleTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean"> <property name="jobDetail"> <ref bean="mergeJobDetail"/> </property> <property name="startDelay"> <!--5*1000毫秒--> <value>5000</value> </property> <property name="repeatInterval"> <value>300000</value> </property> </bean>