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>