zoukankan      html  css  js  c++  java
  • Spring4 Quartz2 动态任务,Spring4整合quartz2.2.3简单动态任务

     Spring4 Quartz2 动态任务

    Spring4整合quartz2.2.3简单动态任务,

    Quartz2.2.3简单动态定时任务二,

    SimpleScheduleBuilder简单定时任务

    >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

    ©Copyright 蕃薯耀 2017年9月6日

    http://www.cnblogs.com/fanshuyao/

    此处使用的是Quartz中SimpleScheduleBuilder类,非CronScheduleBuilder,CronScheduleBuilder是Cron表达式的。具体请自行百度。

    Java代码  收藏代码
    1. /** 
    2.      * 新增任务 
    3.      * @param scheduleJob 
    4.      * @throws Exception  
    5.      */  
    6.     @Override  
    7.     @SuppressWarnings("unchecked")  
    8.     public void addJobSimple(ScheduleJob scheduleJob) throws Exception{  
    9.         TriggerKey triggerKey = TriggerKey.triggerKey(scheduleJob.getJobName(), scheduleJob.getJobGroup());  
    10.         //任务触发  
    11.         Trigger trigger = scheduler.getTrigger(triggerKey);  
    12.         if (null == trigger) {  
    13.             JobDetail jobDetail = JobBuilder.newJob((Class<? extends Job>) Class.forName(scheduleJob.getClazz()))  
    14.               .withIdentity(scheduleJob.getJobName(), scheduleJob.getJobGroup()).build();  
    15.             jobDetail.getJobDataMap().put("scheduleJob", scheduleJob);  
    16.               
    17.             SimpleScheduleBuilder simpleScheduleBuilder = SimpleScheduleBuilder.simpleSchedule();  
    18.             if("秒".equals(scheduleJob.getTimeType()) ||   
    19.                     "second".equalsIgnoreCase(scheduleJob.getTimeType())){  
    20.                 simpleScheduleBuilder.withIntervalInSeconds(scheduleJob.getTimeValue()).repeatForever();  
    21.             }else if("分".equals(scheduleJob.getTimeType()) || "分钟".equals(scheduleJob.getTimeType()) ||   
    22.                     "minute".equalsIgnoreCase(scheduleJob.getTimeType())){  
    23.                 simpleScheduleBuilder.withIntervalInMinutes(scheduleJob.getTimeValue()).repeatForever();  
    24.             }else if("时".equals(scheduleJob.getTimeType()) || "小时".equals(scheduleJob.getTimeType()) ||   
    25.                     "hour".equalsIgnoreCase(scheduleJob.getTimeType())){  
    26.                 simpleScheduleBuilder.withIntervalInHours(scheduleJob.getTimeValue()).repeatForever();  
    27.             }else if("天".equals(scheduleJob.getTimeType()) ||   
    28.                     "date".equalsIgnoreCase(scheduleJob.getTimeType())){  
    29.                 simpleScheduleBuilder.withIntervalInHours(scheduleJob.getTimeValue()).repeatForever();  
    30.             }  
    31.             ScheduleBuilder<SimpleTrigger> schedBuilder = simpleScheduleBuilder.withMisfireHandlingInstructionNextWithRemainingCount();  
    32.               
    33.             trigger =TriggerBuilder.newTrigger().withIdentity(scheduleJob.getJobName(), scheduleJob.getJobGroup())  
    34.                     .withSchedule(schedBuilder).build();  
    35.             trigger = TriggerBuilder.newTrigger().withIdentity(scheduleJob.getJobName(), scheduleJob.getJobGroup()).withSchedule(schedBuilder).build();  
    36.             scheduler.scheduleJob(jobDetail, trigger);  
    37.             log.info(CC.LOG_PREFIX + "新增简单任务:"+JasonUtils.Object2String(scheduleJob));  
    38.         }else {  
    39.             this.updateJobCron(scheduleJob);  
    40.         }  
    41.     }  

    需要注意是的,当定时任务只执行一次时,就要仔细看代码,如上面的简单定时任务,刚开始是我这样的:

    Java代码  收藏代码
    1. simpleScheduleBuilder.withIntervalInSeconds(scheduleJob.getTimeValue());  

     结果只执行一次,而我需要的是不断循环执行,最后改成:

    Java代码  收藏代码
    1. simpleScheduleBuilder.withIntervalInSeconds(scheduleJob.getTimeValue()).repeatForever();  

    可以看出,后面多了个:repeatForever(),表示永远重复。

    如果是希望执行多少次后不执行,就使用:.withRepeatCount(triggerRepeatCount),如下:

    Java代码  收藏代码
    1. simpleScheduleBuilder.withIntervalInHours(scheduleJob.getTimeValue()).withRepeatCount(triggerRepeatCount);  

    (如果你觉得文章对你有帮助,欢迎捐赠,^_^,谢谢!) 

    >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

    ©Copyright 蕃薯耀 2017年9月6日

    http://www.cnblogs.com/fanshuyao/

  • 相关阅读:
    获取网络动态flash下载地址工具mark HA
    mac 下windows系统修改快捷键 HA
    CABasicAnimation HA
    喷墨和激光打印的不同点 HA
    HTML iphone HA
    html5 HA
    CastleMonoRail配置[webConfig]
    什么是MonoRail?[基础知识讲解]
    javascript常用函数
    CastleGlobalApplication.cs工程起始加载
  • 原文地址:https://www.cnblogs.com/fanshuyao/p/7484801.html
Copyright © 2011-2022 走看看