欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Spring Quartz使用及配置

程序员文章站 2022-05-24 19:05:26
...

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

相关标签: Quartz