Quartz 定时任务 基础

 1.Job

  (2).job定义

 

    实现业务逻辑的任务接口

    job接口非常容易实现,只有一个execute方法,类似TimerTask的run方法,在里面编写业务逻辑

    源码

      

   (2).Job实例在Quartz中的声明周期

 

       每次调度器执行job时,他在调用execute方法前会创建一个新的Job实例

    当调度完成后,关联的Job对象会被释放,释放的实例会被垃圾回收机制回收

 

2.JobDetail

  JobDetail为Job实例提供了许多设置属性,以及JobDataMap成员变量属性,他用来存储特定job实例的状态信息,调度器需要借助JobDetail对象来添加Job实例

  (1).重要属性

    name:任务的名称

    group:任务的组,默认值DEFAULT

    jobClass:任务的实现类

    JobDataMap:传参

    

 

3.JobExecutionContext

  (1)JobExecutionContext是什么

    当Scheduler调用一个Job,就会将JobExecutionContext传递给Job的execute()方法;

    Job能通过JobExecutionContext对象访问到Quartz运行时候的环境以及Job本身的明细参数

 

4.JobDataMap

  在进行任务调度时JobDataMap存储在JobExecutionContext中,获取非常方便

  JobDataMap可以用来装在任何可序列化的数据对象当Job实例对象被执行的时候这些参数对象会传递给他

  JobDataMap实现JDK的Map接口,并且添加了一些非常方便的方法用来存取基本数据类型

 

  获取JobDataMap的两种方式

    从Map中直接获取  

      

    

     第二种方式获取(job实现类中添加setter方法对应jobDataMap的键值-->Quartz框架默认的JobFactory实现类在初始化Job实例对象会制动的调用这些setter方法)

      

 

5 .Trigger

  什么是Trigger

    Quartz中的触发器,用来告诉调度程序作业什么时候触发。即Trigger对象是用来触发执行job的

  触发器属性

    JobKey:表示Job实例的表示,触发器被触发时,该指定的Job实例会执行

    StartTime:表示触发器的时间首次被触发的事件。他的值的类型是Java.util.Data。

    EndTime:指定触发器的不再被触发的时间。他的类型是Java.util.Data。

     

   SimpleTrigger

    作用

      在一个指定时间段内执行一次作业任务或是在指定的时间间隔内多次执行作业任务

    注意

      重复次数可以为0,正整数或是SimpleTrigger.REPEAT_INDEFINITELY常量值

      重复执行间隔必须为0或长整数

      一旦被指定了endTime参数,那么他会覆盖重复次数参数的效果

  CronTrigger

    作用

      基于日历的作业调度器,不是像SimpleTrigger那样精确指定间隔时间,比SimpleTrigger更常用

    Cron表达式

      用于配置C荣Trigger实例

      是由7个子表达式组成的字符串,描述了时间表的详细信息

      格式:[秒] [分] [小时] [日] [月] [ 周] [年]()(连接有空格)

      

       

       

       需要的时候可以在百度上搜索cron表达式在线生成器

  

6.Schedubler

  Schedubler-工厂模式

    所有的Schedbuler实例应该由SchedulerFactory来创建

  实现类

    StdSchedulerFactory
    DirectSchedulerFactory

  StdSchedulerFactory

    使用一组参数(java.util.Properties)来创建和初始化Quartz调度器

    配置参数一般存储在Quartz.properties中

    调用getScheduler方法就能创建和初始化调度器对象

  Scheduler主要函数

    Date scheduleJob(JobDetail jobDetail,Trigger trigger)(返回的是最近要执行的时间)

    void start()

    void standby()(暂停执行)

    void shutdown()(停止)(如果传入参数是true 表示等待所有正在执行的job完成后在关闭,如果是false表示直接关闭)

 

7.quartz.propeties

  配置文件加载顺序:工程的配置-->jar配置

  组成部分

    调度器属性:

      org.quartz.scheduler.instanceName属性用来区分特定的调度器实例,可以按照功能用途来给调度器起名

      org.quartz.scheduler.instanceId属性和前者一样,也允许任何字符串,但这个值必须是所在调度器实例中是唯一的尤其是在一个集群中作为唯一key。如果你想Quartz帮你生成这个值,也可以设置为AUTO

    线程池属性:

      threadCount(设置线程池数量最小1) 

      threadPriority(工作线程的优先级,最大10,最小1,默认5,只能是整数)

      org.quartz.threadPool.class

    作业存储设置:

      描述了在调度器实例的生命周期中,job和trigger信息是如何被存储的。

    插件配置:

      满足特定需求要用到Quartz插件的配置

 

 

posted @ 2021-10-13 16:08  921341593  阅读(98)  评论(0编辑  收藏  举报