Учебник по планированию Quartz 2

Учебник по планированию Quartz 2

Quartz, структура заданий планировщика предприятия, чтобы помочь приложению Java планировать выполнение задания / задачи в указанную дату и время.

Из этого туториала Вы узнаете, как разработать задание планировщика с использованием новейшей библиотеки Quartz 2.1.5.

Note
Quartz 2 требует значительного изменения API, прочтите это дляolder Quartz 1.6.3 example.

1. Скачать Кварц

Вы можете получить библиотеку Quartz из центрального репозиторияofficial website или Maven.

Файл: pom.xml


    
        org.quartz-scheduler
        quartz
        2.1.5
    

Note
Чтобы развернуть Quartz на сервере приложений, таком как JBoss, oracle или weblogic, вам может потребоваться дополнительная зависимость Quartz, прочтите этотguide.

2. Кварц Иов

Кварцевая работа определяется тем, что вы хотите запустить?

Файл: HelloJob

package com.example.common;

import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;

public class HelloJob implements Job
{
    public void execute(JobExecutionContext context)
    throws JobExecutionException {

        System.out.println("Hello Quartz!");

    }

}

3. Кварцевый триггер

Кварцевый триггер определяется, когда Кварц будет работать над вашей работой выше Кварца?

Как и в старом Quartz, в Quartz 2 есть еще два типа триггеров, но с измененными API:

  • SimpleTrigger - позволяет установить время начала, время окончания, интервал повторения.

  • CronTrigger - позволяет выражению Unix cron указывать даты и время запуска вашей работы.

SimpleTrigger - запускать каждые 5 секунд.

    Trigger trigger = TriggerBuilder
    .newTrigger()
    .withIdentity("dummyTriggerName", "group1")
    .withSchedule(
        SimpleScheduleBuilder.simpleSchedule()
        .withIntervalInSeconds(5).repeatForever())
    .build();

CronTrigger - запускать каждые 5 секунд.

    Trigger trigger = TriggerBuilder
    .newTrigger()
    .withIdentity("dummyTriggerName", "group1")
    .withSchedule(
        CronScheduleBuilder.cronSchedule("0/5 * * * * ?"))
    .build();

Note
Прочтите этотofficial documentation, чтобы увидеть больше примеров триггеров Quartz 2.

4. планировщик

Класс планировщика связывает вместе «Job» и «Trigger» и выполняет его.

        Scheduler scheduler = new StdSchedulerFactory().getScheduler();
        scheduler.start();
        scheduler.scheduleJob(job, trigger);

5. Полный пример

Кварц 2 полных примера с SimpleTrigger и CronTrigger.

SimpleTrigger example - Работает всего 5 секунд.

package com.example.quartz;

import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.SimpleScheduleBuilder;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;
import org.quartz.impl.StdSchedulerFactory;

public class SimpleTriggerExample {
    public static void main(String[] args) throws Exception {

        // Quartz 1.6.3
        // JobDetail job = new JobDetail();
        // job.setName("dummyJobName");
        // job.setJobClass(HelloJob.class);

        JobDetail job = JobBuilder.newJob(HelloJob.class)
            .withIdentity("dummyJobName", "group1").build();

                //Quartz 1.6.3
        // SimpleTrigger trigger = new SimpleTrigger();
        // trigger.setStartTime(new Date(System.currentTimeMillis() + 1000));
        // trigger.setRepeatCount(SimpleTrigger.REPEAT_INDEFINITELY);
        // trigger.setRepeatInterval(30000);

        // Trigger the job to run on the next round minute
        Trigger trigger = TriggerBuilder
            .newTrigger()
            .withIdentity("dummyTriggerName", "group1")
            .withSchedule(
                SimpleScheduleBuilder.simpleSchedule()
                    .withIntervalInSeconds(5).repeatForever())
            .build();

        // schedule it
        Scheduler scheduler = new StdSchedulerFactory().getScheduler();
        scheduler.start();
        scheduler.scheduleJob(job, trigger);

    }
}

CronTrigger example - то же самое, запускать задание каждые 5 секунд.

package com.example.quartz;

import org.quartz.CronScheduleBuilder;
import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;
import org.quartz.impl.StdSchedulerFactory;

public class CronTriggerExample
{
    public static void main( String[] args ) throws Exception
    {
        //Quartz 1.6.3
        //JobDetail job = new JobDetail();
        //job.setName("dummyJobName");
        //job.setJobClass(HelloJob.class);
        JobDetail job = JobBuilder.newJob(HelloJob.class)
        .withIdentity("dummyJobName", "group1").build();

    //Quartz 1.6.3
        //CronTrigger trigger = new CronTrigger();
        //trigger.setName("dummyTriggerName");
        //trigger.setCronExpression("0/5 * * * * ?");

        Trigger trigger = TriggerBuilder
        .newTrigger()
        .withIdentity("dummyTriggerName", "group1")
        .withSchedule(
            CronScheduleBuilder.cronSchedule("0/5 * * * * ?"))
        .build();

        //schedule it
        Scheduler scheduler = new StdSchedulerFactory().getScheduler();
        scheduler.start();
        scheduler.scheduleJob(job, trigger);

    }
}

Скачать исходный код

Скачать -Quartz2Example.zip (10кб)