使用 Java 的 Quartz 作业调度程序,在未执行作业的情况下卡在待机模式
Quartz job scheduler using Java, stuck on standby mode without the job being executed
我有一个 class,我在其中执行一些活动,我想创建一个作业来自动处理此操作,例如每隔 x 分钟安排一次。
我正在使用 Quartz,这个 class 实现了 Job,在我的驱动程序 class 中,我正在创建我的 jobdetail、调度程序和触发器,然后启动它。然而,作业没有被执行,日志信息:
NOT STARTED.
Currently in standby mode.
Number of jobs executed: 0
我的驱动程序中的调度程序代码 class:
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" 是处理我的操作的作业 class,strTimeSched 已被提取并设置为从
提取的 120
我一直在寻找类似的问题,但似乎找不到任何继续前进的提示,不胜感激。
请注意,这是我第一次使用 Quartz/Job 调度。
带有 NOT STARTED
的日志条目具有误导性,因为每当创建 QuartzScheduler
实例时都会显示。这并不意味着工作不是 运行ning。它是在执行完 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");
}
}
}
我有一个 class,我在其中执行一些活动,我想创建一个作业来自动处理此操作,例如每隔 x 分钟安排一次。 我正在使用 Quartz,这个 class 实现了 Job,在我的驱动程序 class 中,我正在创建我的 jobdetail、调度程序和触发器,然后启动它。然而,作业没有被执行,日志信息:
NOT STARTED.
Currently in standby mode.
Number of jobs executed: 0
我的驱动程序中的调度程序代码 class:
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" 是处理我的操作的作业 class,strTimeSched 已被提取并设置为从
提取的 120我一直在寻找类似的问题,但似乎找不到任何继续前进的提示,不胜感激。 请注意,这是我第一次使用 Quartz/Job 调度。
带有 NOT STARTED
的日志条目具有误导性,因为每当创建 QuartzScheduler
实例时都会显示。这并不意味着工作不是 运行ning。它是在执行完 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");
}
}
}