浅谈Quartz

    近期闲来无事简单的研究了一下任务调度框架(当然你可以可以称它为工具,看问题的角度不同,在这里我称它为框架)---Quartz,在这里和大家分享一下。

  1. OpenSymphony提供的强大的开源任务调度框架。
  2. 官网:http://www.quartz-scheduler.org/ 。
  3. Quartz是纯java实现。
  4. Quartz的特点:
    1. 强大的调度功能
    2. 灵活的应用方式
    3. 分布式和集群能力
  5. Quartz主要用到的设计模式:
    1. Builder模式
    2. Factory模式
    3. 组件模式
    4. 链式写法
  6. Quartz体系结构:
    1. Quartz的三个核心概念:调度器,任务,触发器。
    2. Quartz重要组成:Job,JobDetail,JobBuilder,JobStore,Trigger,TriggerBuilder,ThreadPool,Schedular,Calender,监听器(JobListener,TriggerListener,SchedulerListener)。Quartz大概有300个类组成。  
  7. 浅谈Job:
    1. 实现业务逻辑的任务接口。
    2. Job接口非常容易实现,只有一个execute方法,在里面编写业务逻辑。
    3. 每次调度器执行job时,它在调用execute方法之前会创建一个新的job实例。

    4. 当调用完成后,关联的job对象实例会被释放,释放的实例会被垃圾回收机制回收。

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

  9. JobExecutionContext是什么?                                                                                                                                                     当Scheduler调用一个Job,就会将JobExecutionContext传递给Job的execute()方法。 Job能通过JobExecutionContext对象访问到Quart运行时候的环境以及Job本身的明细数据。

  10. JobDataMap是什么?

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

    2. JobDataMap可以用来装载任何可序列化的数据对象,当Job实例对象被执行时这些参数对象会传递给它。

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

  11. 获取JobDetail和Trigger中自定义参数的两种方式:

    1. 通过JobExecutionContext实例获取JobDateMap对象,使用该对象中的方法获取。

    2. 在Job实现类中添加getter/setter方法(Quartz框架默认的JobFactory实现类在初始化job实例对象时会自动调用这些setter方法将参数值传过来)。

  12. 浅谈Trigger:

    触发器通用属性:

           JobKey: Job实例的标识,触发器被触发时,该指定的Job实例会执行。

           StartTime: 首次被触发的时间。它的值的类型是Java.util.Date。

           EndTime: 指定触发器不在被触发的时间。它的值的类型是Java.util.Date。

  13. 使用SimpleTrigger需要注意的几点:

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

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

    3. .一旦被指定了endTime参数,那么它会覆盖重复执行次数参数的效果。

  14. 浅谈CronTrigger:

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

    2. Cron表达式:用于配置CronTrigger实例,是由7个子表达式组成的字符串,描述了时间表的详细信息,格式:[秒] [分] [小时] [日] [月] [周] [年]。

    3. 我们还可以使用在线生成器帮我们生成:http://cron.qqe2.com/

  15. 浅谈Scheduler:

    1. SchedulerFactory的两个实现类:StdSchedulerFactory 和DirectSchedulerFactory。

    2. StdSchedulerFactory:

      1. 使用一组参数(Java.util.Properties)来创建和初始化Quartz调度器。
      2. 配置参数一般存储在quartz.properties中。
      3. 调用getScheduler方法就能创建和初始化对象。
  16. quartz.properties组成部分:调度器属性,线程池属性,作业存储属性,插件配置。

好了,今天就给大家总结到这里,欢迎大家吐槽拍砖。

 

-------------------------------------------------------------------------

中原银行总行科技岗内推,加我微信:18236913621。更新时间:2018年12月14日。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值