【问题标题】:Java - Quartz CronSchedule doesn't Work with start date and end dateJava - Quartz CronSchedule 不适用于开始日期和结束日期
【发布时间】:2017-10-20 13:43:01
【问题描述】:

当我将 startDate 和 endDate 设置为 Trigger 时,ChronSchedule 仅在作业上调用 execute 方法一次。

JobDetail job = JobBuilder.newJob(service)
                    .withIdentity(batchService.getName(), CommonConstants.BATCH_JOB_GROUP).build();
            Trigger trigger = TriggerBuilder
                    .newTrigger()
                    .withIdentity(batchService.getName(), CommonConstants.BATCH_JOB_GROUP)
                    .startAt(startDate)
                    .endAt(endDate)
                    .withSchedule(
                            CronScheduleBuilder.cronSchedule("0/5 * * * * ?"))
                    .build();
            System.out.println("##########" + trigger.getEndTime());
            System.out.println("##########" + trigger.getStartTime());

如您所见,我在触发器上放了一些打印以获取开始日期和结束日期。 似乎是正确的:

##########Fri Oct 20 16:00:00 CEST 2017
##########Fri Oct 20 15:00:00 CEST 2017

在execute方法中,我放了一个打印:

public void execute(JobExecutionContext context) throws JobExecutionException
    {   
        System.out.println("Executing job. The next: " + context.getNextFireTime());

    }

但结果很不舒服:

Executing job. The next: null

我做错了什么?

【问题讨论】:

    标签: java quartz-scheduler quartz


    【解决方案1】:

    我不了解 CronScheduler 或 CronsTrigger,但您可以尝试关注而不是 CronScheduleBuilder。

    导入 org.quartz.* 包。

    JobDetail jobDetail = JobBuilder.newJob(MYJOB.class).withIdentity(jobName).withDescription("TryThis").build();
    
    CalendarIntervalTriggerImpl trigger = new CalendarIntervalTriggerImpl("triggername", startTime, endTime,
                                     DateBuilder.IntervalUnit.valueOf("MINUTE"), frequency);
    
    // Try to keep scheduler object as singultant object. 
    // OR it'll also work fine if you start scheduler it multiple times with diffrebt scheduler object for JDBCJob store.
    
    SchedulerFactory sf = new StdSchedulerFactory(); 
    
    Scheduler scheduler = sf.getScheduler();  
    scheduler.start();
    
    scheduler.scheduleJob(jobDetail, trigger);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-19
      • 1970-01-01
      • 1970-01-01
      • 2022-01-23
      • 1970-01-01
      • 1970-01-01
      • 2021-11-12
      • 1970-01-01
      相关资源
      最近更新 更多