Проверить, выполняется задание или нет?

Я хочу проверить, запущено ли задание Quartz или нет. Я обнаружил, что его можно использовать с помощью scheduler.getCurrentlyExecutingJobs(). BuI запутался с этим, и где именно я должен поставить его, чтобы получить результаты? Спасибо

try {

        // specify the job' s details..
        JobDetail job = JobBuilder.newJob(TestJob.class)
            .withIdentity("testJob")
            .build();

        // specify the running period of the job
        Trigger trigger = TriggerBuilder.newTrigger()
              .withSchedule(  
                    SimpleScheduleBuilder.simpleSchedule()
                    .withIntervalInSeconds(10)
                    .repeatForever())  
                         .build();  

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

        System.out.println("******* " + sch.getCurrentlyExecutingJobs());

    } catch (SchedulerException e) {
        e.printStackTrace();
    }

person Amila Iddamalgoda    schedule 04.07.2014    source источник


Ответы (1)


Вы можете использовать scheduler.getCurrentlyExecutingJobs(), чтобы получить список всех заданий, которые выполняются в данный момент.

       List<JobExecutionContext> currentJobs = scheduler.getCurrentlyExecutingJobs();
       for (JobExecutionContext jobCtx: currentJobs){
           jobName = jobCtx.getJobDetail().getName();
           groupName = jobCtx.getJobDetail().getGroup();
           if (jobName.equalsIgnoreCase("job_I_am_looking_for_name") &&            groupName.equalsIgnoreCase("job_group_I_am_looking_for_name")) {
               //found it!
               logger.warn("the job is already running - do nothing");
                        return;
           }               
       }
person paul    schedule 04.07.2014
comment
Одно примечание из getCurrentlyExecutingJobs() docs: этот метод не поддерживает кластер. То есть он будет возвращать только те задания, которые в данный момент выполняются в этом экземпляре планировщика, а не во всем кластере. - person Marboni; 28.06.2015