zoukankan      html  css  js  c++  java
  • Spring||Quartz

    1.what's Quartz

      开源级别的任务调度服务,即在特定的时间执行操作,Spring以声明的方式配置计划任务,以"任务调度"为核心主要分为任务,触发器以及调度器

      1.任务

        Quartz提供Job来支持任务定义

      

    publc interface Job{
        void execute(JobExcutionContext context)throws JobExecutionException;
    }
    //Quartz每次执行job时,会为job创建一个实力,JobDetil为实现类,允许对Job进行分组

      2.触发器

        Trigger类负责定义Job执行的时间触发规则,有两个实现类SimpleTrigger和CronTrigger,为应对不同的场景所支持。

      3.调度器

        Schedular类为独立的容器,Trigger和Jobdetail注册到Schedular中,定义多个接口方法,允许通过组及名称访问容器中的Trigger和Jobdetail

      2.execute Trigger Mission

      Quartz具有以下包

    通过JobDetail的JobDataMap对象进行初始化处理,

      SimpleTrigger

          用于处理固定时间间隔调度任务 ,通过设置触发器属性

      CronTrigger

          指定时间点的调度任务,通过Cron表达式

        表达式范围

        example: 1 2 3 4 5 6 7 

          秒,分,时,月份中的每一天,月份,星期几,年份

          0-59,0-59,0~23,1-31,1~12或者JAN~DEC,1~7OR SUN~SAT,1970~2099

          * /,*/,*/,*/,*/?L,*/,*/?L,*/

    -------------------------------desciption

       -:表示一个范围

       *:表示每个值

       ,:间隔范围

       ?:表示月份中的哪一天

       /:x/y x=>init ,y=>增量

     L:最后一天

    Calendar

     计算间隔

    interface Calendar extends Serializable,Clonable{
       boolean isTimeIncluding(long timeStamp);
    
       long getNextInincluding(long timeStamp);
    }

    包含了以下实现类

    WeeklyCalendar   用于排除星期中的一天或多天

    MonthlyCalendar  排除月份中的数天

    AnnualCalendar  用于排除年份中的一天或者多天

    HolidayCalendar 排除节假日

    //Calendar
    AnnualCalendar cal =new AnnualCalendar();
    Calendar mycal = GregorianCalendar.getInstance();
    mycal.set(Calendar.MONTH,Calendar.JUNY);
    mycal.set(Calendar.DATE,1);
    cal.setDayExeclued(mycal,true)
    //registry
    //get connection

    Quartz For Spring

     通过JobExecutionContext从JobDataMap中读取数据,Spring提供了QuartzJobBean类,实现了Job接口,通过executeInternal()方法定义预定的时刻计划任务,

    class RemindJob extends QuartzJobBean{
       
    //通过JobDetail描述Job信息.
    @Override
      void executionInternal (JobExecutionContext jobContext)throws JobExecutionException{
       ....
       
    }
    }
    执行2次
    
    <bean id="simpleTrigger" class="org.springframework.scheduling.quartz.SimpleTriggerBean">  
    
      <!--指定触发器关联的作业-->  
    
      <property name="jobDetail">  
    
          <ref bean="weekJobDetailFactoryBean"/>  
    
      </property>  
    
      <!--延迟10s-->  
    
      <property name="startDelay">  
    
          <value>10000</value>  
    
      </property>  
    
      <!--每60s启动一次-->  
    
      <property name="repeatInterval">  
    
          <value>60000</value>  
    
     </property>  
    
    <!--重复一次-->  
    
     <property name="repeatCount">  
    
          <value>1</value>  
    
     </property>  
    
    </bean>
    
    执行1次:

    CronTriggerBeanForSpring

    Spring  提供了CronTriggerBean来精确定义规则,

    <config cron>
    <bean name="" class="org.springframework.scheduling.quartz.CronTriiggerBean">
       <!--config cron-->
      <proprty name=""cronExpression" value="0 30 9 ? * MON-FRI">
    </bean>
  • 相关阅读:
    第一个 Python 程序
    Qt之字体文件(TTF)
    Memcached
    Qt之QtSoap(访问WebService)
    Crypto++编译使用
    Memcached
    Windows下编译OpenSSL
    基于Core Text实现的TXT电子书阅读器
    java代码获取jdbc链接properties
    ext树表+ZeroClipboard复制链接功能
  • 原文地址:https://www.cnblogs.com/EraserHead/p/6611005.html
Copyright © 2011-2022 走看看