关于Quartz作业调度框架的使用入门

原创 2018年04月17日 17:10:54

Quartz是一个完全由java编写的开源作业调度框架.

在Java应用程序中进行作业调度提供了简单却强大的机制。Quartz允许开发人员根据时间间隔来调度作业。它实现了作业和触发器的多对多的关系,还能把多个作业与不同的触发器关联。简单地创建一个org.quarz.Job接口的Java类,Job接口包含唯一的方法:
 
    public void execute(JobExecutionContext context) throws JobExecutionException;
 
在Job接口实现类里面,添加需要的逻辑到execute()方法中。配置好Job实现类并设定好调度时间表,Quartz就会自动在设定的时间调度作业执行execute()。
 
整合了Quartz的应用程序可以重用不同事件的作业,还可以为一个事件组合多个作业。Quartz通过属性文件来配置JDBC事务的数据源、全局作业、触发器侦听器、插件、线程池等等。
 
Quartz是由James House创建并最初于2001年春天被加入sourceforge工程。接下来的几年里,有很多的新特性和版本出现,但是直到项目迁移到新的站点并成为OpenSymphony项目家族的一员,才开始真正启动并受到也有的关注。
 
目前的版本已经是2.0以上,v2.x相对于v1.x有很多新特性出现,并有很多的改动,具体参见Quartz官网上说明。这里介绍的仍然是v1.x(v1.8.6)。

Quartz中三个对象

JobDetail  工作对象,指具体做什么事

Trigger    触发器,指什么时间做事,事情做多少次,侧重做事的频率  

 Scheduler  定时器对象,关联前两个对象,开启定时任务   

比较重要的表达式:

Cron表达式
1)字段取值及字符
字段名                 允许的值                        允许的特殊字符  
秒                       0-59                                , - * /  
分                       0-59                                , - * /  
小时                     0-23                                , - * /  
日                       1-31                                , - * ? / L W C  
月                       1-12 or JAN-DEC              , - * /  
周几                     1-7 or SUN-SAT                    , - * ? / L C #  
年 (可选字段)         empty, 1970-2099                 , - * /
Day-of-month 和 Day-of-week必须有一个指定为?
"?"字符:表示不确定的值
","字符:指定数个值
"-"字符:指定一个值的范围

"/"字符:指定一个值的增加幅度。n/m表示从n开始,每次增加m



Quartz在Maven中和spring一起整合的用法:

第一步先导入坐标:(版本可能不同)

<dependency>
			<groupId>org.quartz-scheduler</groupId>
			<artifactId>quartz</artifactId>
			<version>2.2.1</version>
		</dependency>
		<dependency>
			<groupId>org.quartz-scheduler</groupId>
			<artifactId>quartz-jobs</artifactId>
			<version>2.2.1</version>
		</dependency>

第二步:配置一下web.xml文件spring核心监听器和applicationContext.xml文件的配置


<!-- spring配置文件位置 -->
	<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>classpath:applicationContext.xml</param-value>
	</context-param>
	<!-- spring核心监听器 -->
	<listener>
		<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
	</listener>

第三步:

 建立一个工作对象类加上@Service("promotionBean"),由Spring管理

第四步:配置 applicationContext.xml

<bean id="promotionJob"
		class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
		<!-- ref代表bean -->
		<property name="targetObject" ref="promotionBean"></property>
		<!-- ref代表的方法名 -->
		<property name="targetMethod" value="updateStatus"></property>
	</bean>

	<bean id="promotionTrigger"
		class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
		<property name="jobDetail" ref="promotionJob" />
		<property name="cronExpression" value="* * 20 * * ? 2018"></property>
	</bean>

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

当然spring也有自己的调度框架

1.在applicationContext.xml中加约束

xmlns:task="http://www.springframework.org/schema/task"
		http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-4.2.xsd
	

2.配置开启定时任务注解 

    <task:annotation-driven/>



3.编写具体做事情的类及方法

@Component
public class BosTask {
		
    @Scheduled(cron="*/5 * * * * ?")
    public void refresh(){
	//此处调用
    }	
}





作业调度框架Quartz

Quartz是一个完全由java编写的开源作业调度框架。 一、Quartz的几个核心的接口和类为 Job接口:自己写的“定时程序”实现此接口的void execute(JobExecution...
  • ligang2585116
  • ligang2585116
  • 2015-02-09 18:25:05
  • 1082

Quartz-作业调度框架

简介       Quartz 是个开源的作业调度框架,为在 Java 应用程序中进行作业调度提供了简单却强大的机制。Quartz 允许开发人员根据时间间隔(或天)来调度作业。它实现了作业...
  • melodysky
  • melodysky
  • 2016-08-05 09:38:28
  • 781

Quartz - 作业调度框架

  • 2013年05月14日 08:50
  • 3KB
  • 下载

Java使用quartz实现作业调度

在spring boot中使用quartz实现作业调度的功能,简单易用。什么是Quartz?Quartz是Java领域最著名的、功能丰富的、开放源码的作业调度工具,几乎可以在所有的Java应用程序中集...
  • yeruby
  • yeruby
  • 2016-05-18 22:17:23
  • 1890

Quartz.net开源作业调度框架使用详解

quartz.net作业调度框架是伟大组织OpenSymphony开发的quartz scheduler项目的.net延伸移植版本。支持 cron-like表达式,集群,数据库。功能性能强大更不用说。...
  • jiangfei009003
  • jiangfei009003
  • 2016-09-18 16:32:17
  • 1429

Quartz作业调度框架

  • 2016年06月14日 16:25
  • 4.58MB
  • 下载

任务调度框架Quartz(一) Quartz——一个强大的定时任务调度框架

Quartz,水晶、石英,一个简单朴素有美丽的名字,在Java程序界,Quartz大名鼎鼎,很多Java应用几乎都集成或构建了一个定时任务调度系统,Quartz是一个定时任务调度框架。 何为定时任务...
  • zixiao217
  • zixiao217
  • 2016-11-04 00:00:05
  • 7693

Quartz框架入门学习(一)

Quartz的使用
  • u014705021
  • u014705021
  • 2016-11-13 14:23:25
  • 3861

Quartz 框架

Quartz框架是目前很流行的java任务调度框架。官网地址为:http://www.quartz-scheduler.org/     下载,解压之后的目录如下图:...
  • hehexiaoyou
  • hehexiaoyou
  • 2014-04-11 10:41:05
  • 526

Quartz一个开源的作业调度框架

  • 2017年08月20日 20:08
  • 2.83MB
  • 下载
收藏助手
不良信息举报
您举报文章:关于Quartz作业调度框架的使用入门
举报原因:
原因补充:

(最多只允许输入30个字)