1

我有一门课,我在其中执行一些活动,我想创建一个自动处理此操作的作业,例如每 x 分钟安排一次。我正在使用 Quartz,这个类实现了 Job,并且在我的驱动程序类中,我正在创建我的 jobdetail、调度程序和触发器,然后启动它。但是,作业没有被执行,记录信息:

    NOT STARTED.
  Currently in standby mode.
  Number of jobs executed: 0

我的驱动程序类中调度程序的代码:

try {

        JobDetail job = JobBuilder.newJob(TestMkFPMJob.class).withIdentity("TestMkFPMJob").build();
        Trigger trigger = TriggerBuilder.newTrigger().withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(Integer.parseInt(strTimeSched)).repeatForever()).build();


        SchedulerFactory schFactory = new StdSchedulerFactory();
        Scheduler sch = schFactory.getScheduler();
        sch.start();
        sch.scheduleJob(job, trigger);

            } 
      catch (SchedulerException e)
      {
        e.printStackTrace();
        System.out.println("Scheduler Error");
      }

使用“TestMkFPMJob”作为处理我的操作的作业类,并且 strTimeSched 已经被提取并设置为 120 从

我一直在寻找类似的问题,但似乎找不到任何前进的提示,不胜感激。请注意,这是我第一次使用 Quartz/Job 调度。

4

1 回答 1

3

带有 的日志条目具有NOT STARTED误导性,因为它会在QuartzScheduler创建实例时显示。这并不意味着作业没有运行。它是在Scheduler sch = schFactory.getScheduler();执行完该行并在下一行启动调度程序之后编写的。

如果我拿你的例子在我的电脑上运行它,它会按设计工作:

public class Quartz {

    public static void main(String[] args) {
        try {

            JobDetail job = JobBuilder.newJob(MyJob.class).withIdentity("myJob").build();
            Trigger trigger = TriggerBuilder.newTrigger().withSchedule(SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(Integer.parseInt("10")).repeatForever()).build();

            SchedulerFactory schFactory = new StdSchedulerFactory();
            Scheduler sch = schFactory.getScheduler();
            sch.start();
            sch.scheduleJob(job, trigger);

        }
        catch (SchedulerException e)
        {
            e.printStackTrace();
            System.out.println("Scheduler Error");
        }
    }
    public static class MyJob implements Job {
        @Override
        public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
            System.out.println("runnning job");
        }
    }
}
于 2020-04-08T08:27:25.313 回答