当前位置: 首页 > 知识库问答 >
问题:

使用Java的Quartz作业调度程序,在不执行作业的情况下处于待机模式

翟冯浩
2023-03-14

我有一个执行一些活动的类,我想创建一个自动处理这个操作的作业,例如每x分钟调度一次。我使用的是Quartz,这个类实现了Job,在我的driver类中,我创建了jobdetail、scheduler和触发器,然后启动它。但是,作业未执行,日志信息:

    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调度。

共有1个答案

巴博耘
2023-03-14

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

如果我以您的例子并在我的pc上运行它,它就会像设计的那样工作:

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");
        }
    }
}
 类似资料:
  • 我正在使用一个石英工作执行特定的任务。 如果另一个Main Job实例仍在运行,我想阻止调度器启动第二个Main Job实例...

  • 我正在尝试使用Quartz来调度运行在GlassFish上的web应用程序中的作业。我在用RamjobStore。问题是,有时调度的作业没有被执行,即使它是在过去或将来被调度的。作业数量非常少,排定程序上一直排定的作业总数不到20个,同时保证最多运行1个作业,所以我假设线程计数不是问题,我可以将它设置为ThreadCount1,它仍然可以工作。在servlet被销毁之前,调度程序也不会被关闭。那么

  • 我正在使用Quartz调度器,但我不知道如何并行运行作业。配置文件中有什么东西可以允许我这样做吗?

  • 我有一个使用Quartz1.6.6的Java应用程序。它被部署到Weblogic上,Weblogic的体系结构包括两个应用服务器。 令人困惑的是,我有另一个Java应用程序,其中包含了Quartz调度,它似乎运行得非常愉快。另一个应用程序有一个相同的机制,每分钟触发一个触发器,从日志中我可以看到该作业每60秒只运行一次。 昨天下午作业已运行的次数示例: 15:10:46,984 15:10:49,

  • 问题内容: 我找不到一个提交不使用不推荐使用的类的Hadoop作业的示例。 尚未弃用的,仍然仅支持带有参数的方法。 有人可以给我指出一个Java代码示例,该示例仅使用类(而不是)提交Hadoop map / reduce作业,而不是使用包吗? 问题答案: 希望对您有所帮助

  • 我们有一个使用Spring Framework在Tomcat中运行的Web应用程序。我们需要为循环操作添加一些计划作业。为此,我们遇到了Quartz Scheduler,并遵循了使用Quartz with Spring配置作业的教程,并按预期计划并运行了作业。 所以我们有一些任务是在应用程序启动时安排的。现在我们希望用户手动运行作业并更改作业的触发器,但是我们需要将这些更改持久化到数据库中。因此,