1. 程式人生 > >Spring Quartz使用及配置

Spring Quartz使用及配置

Quartz是一個開源的定時任務框架,在一些日常的任務中,我們經常有一些這樣的需要,比如我們需要隔多少分鐘去掃描或者檢查一下某些檔案,或者在指定的時間點內去處理一些檔案。這些定時的任務更多的是一種批處理任務。在一些常用的實現裡我們會使用shell指令碼來完成這份工作。使用shell指令碼來完成的這些任務相對來說是特定於某個任務的,不具備通用性,而且根據問題性質的複雜程度,有時候我們需要提高定時任務的可靠性和效能,這個時候單純的用一些指令碼來處理就顯得非常困難和複雜了 。於是quartz這個框架就能幫我們不少忙。

jobDetail定義:

用名為PorcessExcuterTrigger的Trigger來驅動排程jobDetail,由於定義的是CronTrigger,因此通過設定cronExpression來設定jobDetail的執行時間,如下是jobDetail的配置:

	<bean id="PorcessExcuter"
		  class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
		<property name="targetObject">
			<bean class="com.service.Query.QueryScheduler" />
		</property>
		<property name="targetMethod" value="executeProcesser" />
		<property name="concurrent" value="false" />
	</bean>

Trigger定義:

	<bean id="PorcessExcuterTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
		<property name="jobDetail" ref="PorcessExcuter" />
		<property name="cronExpression" value="* * */1 * * ?"/>
	</bean>

scheduler定義:

要讓這些定義好的job能夠跑起來,我們還需要有一個scheduler,在spring裡,這些也是準備好了的。針對前面的jobDetail和trigger,它的典型配置如下:

<bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
	<property name="triggers">
		<list>
			···
			<ref bean ="PorcessExcuterTrigger" />
			···
		</list>
	</property>
</bean>

一個任務排程的示例。它的主要步驟為1.定義job 2. 定義trigger 3. 定義scheduler來拼接。

參考:http://websystique.com/spring/spring-4-quartz-scheduler-integration-example/

https://docs.spring.io/spring/docs/4.1.4.RELEASE/spring-framework-reference/htmlsingle/#scheduling-quartz