zoukankan      html  css  js  c++  java
  • 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:

    <?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调度任务的思想与方向。

    说明:所有内容仅做学习记录
  • 相关阅读:
    linux C/C++编程之库-动态库,静态库创建及使用
    类linux 系统iptables 系统初始化配置
    OS error set
    OpenWrt修改
    OpenWrt backfire trunk源码下载及编译
    OpenWrt compiles
    OpenWrt 学习网址
    nginx编译配置
    cocos2d-x中的坐标系
    SGU 231 Prime Sum 求&lt;=n内有多少对素数(a,b)使得a+b也为素数 规律题
  • 原文地址:https://www.cnblogs.com/jayinnn/p/9560972.html
Copyright © 2011-2022 走看看