• 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>
  • 相关阅读:
    编译问题----宏定义一定显示未定义
    低级错误记录-程序更新后,没有显示想要的结果
    云编译的优点-普及云编译
    telecommunication communication 的区别
    学习EPC架构演进历史知识
    EOF与feof的区别
    epoll惊群问题-解决思路
    epoll多路复用机制的学习
    进程组与组长进程
    记录博客开始
  • 原文地址:https://www.cnblogs.com/EraserHead/p/6611005.html
Copyright © 2020-2023  润新知