记录关于Quartz定时调度任务的知识点,知识点主要分为两个部分,第一个部分介绍Quartz,第二部分使用Quartz+Spring来配置使用Quartz的实际操作。

(一)Quartz知识点

Quartz是完全由java开发的一个开源的任务日程管理系统,“任务进度管理器”就是一个在预先确定的时间到达时,负责执行(或者通知)其他组件的系统。 一句话概括:Quartz框架的核心就是调度器;

Quartz 具有以下特点:强大的调度功能,灵活的应用方式,分布式和集群能力。

我认为企业级应用Quartz框架的原因应该主要是它的分布式和集群能力,尤其是配合Zookeeper进行开发。

quartz调度核心元素:

  1. Scheduler:任务调度器,是实际执行任务调度的控制器。在spring中通过SchedulerFactoryBean封装起来。
  2. Trigger:触发器,用于定义任务调度的时间规则,有SimpleTrigger,CronTrigger,DateIntervalTrigger和NthIncludedDayTrigger,其中CronTrigger用的比较多。
  3. JobDetail:用来描述Job实现类及其它相关的静态信息,如Job名字、关联监听器等信息。在spring中有JobDetailFactoryBean和 MethodInvokingJobDetailFactoryBean两种实现,如果任务调度只需要执行某个类的某个方法,就可以通过MethodInvokingJobDetailFactoryBean来调用。
  4. Job:是一个接口,只有一个方法void execute(JobExecutionContext context),开发者实现该接口定义运行任务。

(二)Quartz在Spring中的实际应用

下面给出我配置的一个定时任务,而该任务的实现可以根据具体的场景进行实现。

首先配置Spring:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd"> <!--新添加的定时任务QuartzTestJob-->
<bean id="quartzTestJob"
class="cn.mwee.service.shop.quartz.QuartzTestJob" /> <bean id="quartzTestTask"
class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
<property name="targetObject" ref="quartzTestJob"/>
<property name="targetMethod" value="execute"/>
<property name="concurrent" value="false"/>
</bean> <bean id="quartzTestTrigger"
class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
<property name="jobDetail" ref="quartzTestTask"/>
<!--cron表达式-->
<property name="cronExpression" value="*/10 * * * * ?"/>
</bean> <!-- 总管理类 -->
<bean id="startQuartz"
class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
<property name="autoStartup" value="false"/>
<property name="triggers">
<list>
<!--<ref bean="koubeiCueWordTrigger"/>-->
<ref bean="quartzTestTrigger"/>
</list>
</property>
</bean>
</beans>

具体实现的任务类QuartzTestJob:

public class QuartzTestJob extends AbstractBaseJob{
@Override
public void work() {
logger.info("QuartzTestJob START"); logger.info("QuartzTestJob OVER");
}
}

这样就配置好了定时任务,具体的启动代码就不给出来,主要是提供一个设置Quartz调度任务的思想与方向。

记录关于Quartz定时调度任务的知识点,知识点主要分为两个部分,第一个部分介绍Quartz,第二部分使用Quartz+Spring来配置使用Quartz的实际操作。

(一)Quartz知识点

Quartz是完全由java开发的一个开源的任务日程管理系统,“任务进度管理器”就是一个在预先确定的时间到达时,负责执行(或者通知)其他组件的系统。

一句话概括:Quartz框架的核心就是调度器;

Quartz 具有以下特点:强大的调度功能,灵活的应用方式,分布式和集群能力。

我认为企业级应用Quartz框架的原因应该主要是它的分布式和集群能力,尤其是配合Zookeeper进行开发。

quartz调度核心元素:

  1. Scheduler:任务调度器,是实际执行任务调度的控制器。在spring中通过SchedulerFactoryBean封装起来。
  2. Trigger:触发器,用于定义任务调度的时间规则,有SimpleTrigger,CronTrigger,DateIntervalTrigger和NthIncludedDayTrigger,其中CronTrigger用的比较多。
  3. JobDetail:用来描述Job实现类及其它相关的静态信息,如Job名字、关联监听器等信息。在spring中有JobDetailFactoryBean和 MethodInvokingJobDetailFactoryBean两种实现,如果任务调度只需要执行某个类的某个方法,就可以通过MethodInvokingJobDetailFactoryBean来调用。
  4. Job:是一个接口,只有一个方法void execute(JobExecutionContext context),开发者实现该接口定义运行任务。

(二)Quartz在Spring中的实际应用

下面给出我配置的一个定时任务,而该任务的实现可以根据具体的场景进行实现。

首先配置Spring:

  1.  
    <?xml version="1.0" encoding="UTF-8"?>
  2.  
    <beans xmlns="http://www.springframework.org/schema/beans"
  3.  
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  4.  
    xsi:schemaLocation="http://www.springframework.org/schema/beans
  5.  
    http://www.springframework.org/schema/beans/spring-beans.xsd">
  6.  
     
  7.  
    <!--新添加的定时任务QuartzTestJob-->
  8.  
    <bean id="quartzTestJob"
  9.  
    class="cn.mwee.service.shop.quartz.QuartzTestJob" />
  10.  
     
  11.  
    <bean id="quartzTestTask"
  12.  
    class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean">
  13.  
    <property name="targetObject" ref="quartzTestJob"/>
  14.  
    <property name="targetMethod" value="execute"/>
  15.  
    <property name="concurrent" value="false"/>
  16.  
    </bean>
  17.  
     
  18.  
    <bean id="quartzTestTrigger"
  19.  
    class="org.springframework.scheduling.quartz.CronTriggerFactoryBean">
  20.  
    <property name="jobDetail" ref="quartzTestTask"/>
  21.  
    <!--cron表达式-->
  22.  
    <property name="cronExpression" value="*/10 * * * * ?"/>
  23.  
    </bean>
  24.  
     
  25.  
     
  26.  
    <!-- 总管理类 -->
  27.  
    <bean id="startQuartz"
  28.  
    class="org.springframework.scheduling.quartz.SchedulerFactoryBean">
  29.  
    <property name="autoStartup" value="false"/>
  30.  
    <property name="triggers">
  31.  
    <list>
  32.  
    <!--<ref bean="koubeiCueWordTrigger"/>-->
  33.  
    <ref bean="quartzTestTrigger"/>
  34.  
    </list>
  35.  
    </property>
  36.  
    </bean>
  37.  
    </beans>

具体实现的任务类QuartzTestJob:

  1.  
    public class QuartzTestJob extends AbstractBaseJob{
  2.  
    @Override
  3.  
    public void work() {
  4.  
    logger.info("QuartzTestJob START");
  5.  
     
  6.  
    logger.info("QuartzTestJob OVER");
  7.  
    }
  8.  
    }

这样就配置好了定时任务,具体的启动代码就不给出来,主要是提供一个设置Quartz调度任务的思想与方向。

Quartz理解与实现的更多相关文章

  1. 关于sping quartz定时执行理解与思考

    转载请注明原创出处,谢谢! 一直以为自己理解spring quartz,忽然最近几天发现自己理解的不对,在4月18号的时候,我执行了一个spring quartz的计划如下: 1 0 0 */3 * ...

  2. 【转】.NET(C#):浅谈程序集清单资源和RESX资源 关于单元测试的思考--Asp.Net Core单元测试最佳实践 封装自己的dapper lambda扩展-设计篇 编写自己的dapper lambda扩展-使用篇 正确理解CAP定理 Quartz.NET的使用(附源码) 整理自己的.net工具库 GC的前世与今生 Visual Studio Package 插件开发之自动生

    [转].NET(C#):浅谈程序集清单资源和RESX资源   目录 程序集清单资源 RESX资源文件 使用ResourceReader和ResourceSet解析二进制资源文件 使用ResourceM ...

  3. (转)Java任务调度框架Quartz入门教程指南(三)任务调度框架Quartz实例详解深入理解Scheduler,Job,Trigger,JobDetail

    http://blog.csdn.net/zixiao217/article/details/53053598 首先给一个简明扼要的理解: Scheduler 调度程序-任务执行计划表,只有安排进执行 ...

  4. quartz源码分析之深刻理解job,sheduler,calendar,trigger及listener之间的关系

    org.quartz包 包org.quartz是Quartz的主包,包含了客户端接口. 其中接口有: Calendar接口: 定义了一个关联Trigger可能(或者不可能)触发的时间空间.它没有定义触 ...

  5. Quartz的misfire理解

    misfire用于Trigger触发时,线程池中没有可用的线程或者调度器关闭了,此时这个Trigger变为misfire.当下次调度器启动或者有可以线程时,会检查处于misfire状态的Trigger ...

  6. JVM的深入理解:由一次Quartz的定时任务引发的“A cannot cast to A”的问题

    由Quartz框架引发的“A cannot cast to A”的问题 起因与问题描述 向新开的项目中添加定时任务,部署集群,添加了热加载(springboot-dev-tools),发现在转型时候出 ...

  7. Spring+quartz cron表达式(cron手册官方)完美理解

    ------------------------------------- 15 17/1 14/3 * * ? 从每小时的17分15秒开始 每分钟的15秒执行一次14:17:15 ...14:59: ...

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

    前言 quartz.net作业调度框架是伟大组织OpenSymphony开发的quartz scheduler项目的.net延伸移植版本.支持 cron-like表达式,集群,数据库.功能性能强大更不 ...

  9. quartz.net 时间表达式----- Cron表达式详解

    序言 Cron表达式:就是用简单的xxoo符号按照一定的规则,就能把各种时间维度表达的淋漓尽致,无所不在其中,然后在用来做任务调度(定时服务)的quart.net中所认知执行,可想而知这是多么的天衣无 ...

随机推荐

  1. POJ 1873 The Fortified Forest(凸包)题解

    题意:二维平面有一堆点,每个点有价值v和删掉这个点能得到的长度l,问你删掉最少的价值能把剩余点围起来,价值一样求删掉的点最少 思路:n<=15,那么直接遍历2^15,判断每种情况.这里要优化一下 ...

  2. P3317 [SDOI2014]重建

    思路 变元矩阵树定理可以统计最小生成树边权积的和,将A矩阵变为边权,D变为与该点相连的边权和,K=D-A,求K的行列式即可 把式子化成 \[ \begin{align}&\sum_{T}\pr ...

  3. Images之multi-stage builds

    原文链接 Use multi-stage builds Multi-stage builds are a new feature requiring Docker 17.05 or higher on ...

  4. 【链接】linuxCentOS权限问题修复(chmod777-R或者chmod755- http://www.cnblogs.com/kofxxf/p/5220836.html

    [链接]linuxCentOS权限问题修复(chmod777-R或者chmod755- http://www.cnblogs.com/kofxxf/p/5220836.html

  5. 【selenium2】【unittest】

    #栗子 from selenium import webdriverfrom selenium.webdriver.common.by import Byfrom selenium.webdriver ...

  6. hdu 6199 gems gems gems dp

    gems gems gems Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) P ...

  7. Bootstrap & Font Awesome 学习笔记

    学习网站:http://bootstrap.ninghao.net/index.html https://www.freecodecamp.cn http://www.runoob.com/boots ...

  8. 1. dubbo概述

    dubbo简介: 官网:http://dubbo.io 最大程度进行解耦,降低系统耦合性,可以跨工程,跨项目; 生产者/消费者模式; jdk:1.6以上 maven:3.0以上 国际maven仓库:h ...

  9. javaSE习题 第一章 JAVA语言概述

    转眼就开学了,正式在学校学习SE部分,由于暑假放视频过了一遍,略感觉轻松,今天开始,博客将会记录我的课本习题,主要以文字和代码的形式展现,一是把SE基础加强一下,二是课本中有很多知识是视频中没有的,做 ...

  10. [osg][opengl]透视投影的参数Perspective

    gluPerspective这个函数指定了观察的视景体(frustum为锥台的意思,通常译为视景体)在世界坐标系中的具体大小,一般而言,其中的参数aspect应该与窗口的宽高比大小相同.比如说,asp ...