关于QUARTZ JOB遇到的问题

1。               

                StdScheduler scheduler = (StdScheduler)context.getScheduler();
                CronTrigger oldCronTrigger = (CronTrigger)context.getTrigger();
                Date nextStartTime = getNextStartTime(oldCronTrigger.getStartTime());
                CronTrigger cronTrigger = new CronTrigger(GECJobStarter.AUTOMATE_LOAD_PENDINGFILE, GECJobStarter.AUTOMATE_LOAD_PENDINGFILE, GECJobStarter.AUTOMATE_LOAD_PENDINGFILE, GECJobStarter.AUTOMATE_LOAD_PENDINGFILE, GECJobStarter.AUTOMATE_LOAD_PENDINGFILE_TIME_Experssion);
                cronTrigger.setNextFireTime(nextStartTime);
                cronTrigger.setStartTime(nextStartTime);
                log.info("LoadPendingFileJobDetail is "+context.getJobDetail());
                log.info("LoadPendingFileTrigger is "+cronTrigger);
                log.info("LoadPendingFileTrigger start time is "+cronTrigger.getStartTime());
                log.info("LoadPendingFileTrigger next fire time is "+cronTrigger.getNextFireTime());   
                //scheduler.deleteJob(Constants.AUTOMATE_LOAD_PENDINGFILE, Constants.AUTOMATE_LOAD_PENDINGFILE);       
               
                scheduler.rescheduleJob(GECJobStarter.AUTOMATE_LOAD_PENDINGFILE, GECJobStarter.AUTOMATE_LOAD_PENDINGFILE, cronTrigger);

 

上面的代码log 出来的时间与qtz_triggers里的时间不一致,比如log中nextStartTime = Fri Dec 25 14:28:07 CST 2009 ,而数据库中却是30分,差了两分钟

希望能够让JOB下一次触发能在第二天的某个时间发生,若 cronTrigger.setStartTime不写的话在reschedule 后还是在原先的下一次触发后就发生了。

 

 

对于一个quartz job""0 0/5 * * * ?" start time 设为14:23

    public Date getNextStartTime(Date previousStartTime) {
         log.info("previousStartTime is "+previousStartTime);
         Calendar currentDate = Calendar.getInstance();
         Calendar previousStartDate = Calendar.getInstance();
         previousStartDate.setTime(previousStartTime);
         currentDate.set(Calendar.HOUR_OF_DAY,previousStartDate.get(Calendar.HOUR_OF_DAY));
         currentDate.set(Calendar.MINUTE,previousStartDate.get(Calendar.MINUTE));
         currentDate.set(Calendar.SECOND,00);
         currentDate.set(Calendar.MILLISECOND, 00);
         currentDate.add(Calendar.MINUTE, 8);
         Date nextStartTime = currentDate.getTime();
         log.info("next start time is "+nextStartTime);
         return nextStartTime;

:35

数据库的firetime 是14:31 但实际触发时间却是14:35

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值