zoukankan      html  css  js  c++  java
  • quartz入门

    quartz任务框架有两个重要对象,作业JobDetail和触发器Trigger,它们是多对多的关系

    作业

    JobDetail

    JobDetail jobDetail = JobBuilder.newJob(HelloQuartzJob.class)  
                    .withIdentity("testJob_1", "group_1")  
                    .build(); 

    触发器

    Trigger,Quartz有两大触发器,SimpleTrigger和CronTrigger

    Trigger trigger = TriggerBuilder.newTrigger()//创建一个新的TriggerBuilder来规范一个触发器  
                    .withIdentity("trigger_1", "group_1")//给触发器一个名字和组名  
    //              .startNow()//立即执行  
                    .startAt(runTime)//设置触发开始的时间  
                    .withSchedule  
                    (  
                        SimpleScheduleBuilder.simpleSchedule()  
                        .withIntervalInSeconds(10)//时间间隔  
                        .withRepeatCount(5)//重复次数(将执行6次)  
                    )  
                    .build();//产生触发器  
    //

     String cronExpression = "30/5 * * * * ?"; // 每分钟的30s起,每5s触发任务        

     CronTrigger cronTrigger = new CronTriggerImpl("cronTrigger", 

     Scheduler.DEFAULT_GROUP, cronExpression);

    cron有6个必要组件和1个可选组件:年(可选)-星期-月-日-时-分-秒。

    misfire特性

    在 Quartz 应用中,misfired job 是经常遇到的情况。一般来说,下面这些原因可能造成 misfired job:

    1)系统因为某些原因被重启。在系统关闭到重新启动之间的一段时间里,可能有些任务会被 misfire;

    2)Trigger 被暂停(suspend)的一段时间里,有些任务可能会被 misfire;

    3)线程池中所有线程都被占用,导致任务无法被触发执行,造成 misfire;

    4)有状态任务在下次触发时间到达时,上次执行还没有结束;

    为了处理 misfired job,Quartz 中为 trigger 定义了处理策略,主要有下面两种:

    MISFIRE_INSTRUCTION_FIRE_ONCE_NOW:针对 misfired job 马上执行一次;

    MISFIRE_INSTRUCTION_DO_NOTHING:忽略 misfired job,等待下次触发;

    建议读者在应用开发中,将该设置作为可配置选项,使得用户可以在使用过程中,针对已经添加的 tirgger 动态配置该选项。

  • 相关阅读:
    OpenSSL证书生成
    支付宝支付流程
    前端获取用户位置信息
    微信公众号开发(三)
    微信公众号开发(二)
    微信公众号开发(一)
    前端优化
    页面自适应
    CSS样式(二)
    CSS样式(一)
  • 原文地址:https://www.cnblogs.com/liluredhat/p/6757829.html
Copyright © 2011-2022 走看看