Tutoriel du programmateur Quartz 2

Tutoriel du planificateur Quartz 2

Quartz, cadre de travail du planificateur d'entreprise, pour aider l'application Java à planifier un travail / une tâche à exécuter à une date et une heure spécifiées.

Ce tutoriel vous montre comment développer un travail de planificateur à l'aide de la dernière bibliothèque Quartz 2.1.5.

Note
Quartz 2 implique une modification importante de l'API, lisez ceci pourolder Quartz 1.6.3 example.

1. Télécharger Quartz

Vous pouvez obtenir la bibliothèque Quartz à partir deofficial website ou du référentiel central Maven

Fichier: pom.xml


    
        org.quartz-scheduler
        quartz
        2.1.5
    

Note
Pour déployer Quartz sur un serveur d'applications comme JBoss, oracle ou weblogic, vous devrez peut-être ajouter une dépendance Quartz, lisez ceciguide.

2. Travail de quartz

Le travail de quartz est défini ce que vous voulez exécuter?

Fichier: 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. Déclencheur à quartz

Le déclencheur Quartz est défini lorsque le Quartz exécutera le travail de Quartz ci-dessus?

Comme l'ancien Quartz, il existe toujours deux types de déclencheurs dans Quartz 2, mais avec les API modifiées:

  • SimpleTrigger - Permet de régler l'heure de début, l'heure de fin, l'intervalle de répétition.

  • CronTrigger - Permet à l'expression cron Unix de spécifier les dates et heures d'exécution de votre travail.

SimpleTrigger - Exécuté toutes les 5 secondes.

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

CronTrigger - Exécuté toutes les 5 secondes.

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

Note
Lisez ceofficial documentation pour plus d'exemples de déclencheurs Quartz 2.

4. Planificateur

La classe Scheduler relie à la fois «Job» et «Trigger» et l'exécute.

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

5. Exemple complet

Quartz 2 exemples complets avec SimpleTrigger et CronTrigger.

SimpleTrigger example - Exécute très 5 secondes.

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 - Idem, exécutez le travail toutes les 5 secondes.

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);

    }
}

Télécharger le code source

Téléchargez-le -Quartz2Example.zip (10kb)