Quarz 2 Scheduler-Tutorial

Quartz 2 Scheduler Tutorial

Quartz, Enterprise Scheduler-Jobframework, um der Java-Anwendung zu helfen, einen Job / eine Aufgabe so zu planen, dass sie zu einem bestimmten Datum und einer bestimmten Uhrzeit ausgeführt wird.

Dieses Tutorial zeigt Ihnen, wie Sie einen Scheduler-Job mit der neuesten Quartz-Bibliothek 2.1.5 entwickeln.

Note
Quarz 2 beinhaltet eine signifikante API-Änderung. Lesen Sie dies fürolder Quartz 1.6.3 example.

1. Laden Sie Quartz

Sie können die Quarzbibliothek ausofficial website oder dem zentralen Maven-Repository abrufen

Datei: pom.xml


    
        org.quartz-scheduler
        quartz
        2.1.5
    

Note
Um Quartz auf einem Anwendungsserver wie JBoss, Oracle oder Weblogic bereitzustellen, benötigen Sie möglicherweise eine zusätzliche Quarzabhängigkeit. Lesen Sie dieseguide.

2. Quartz Job

Quarz-Job ist definiert, was Sie ausführen möchten?

Datei: 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. Quarz-Trigger

Der Quarz-Trigger ist definiert, wann der Quarz den Job Ihres oben genannten Quarzes ausführt.

Wie beim alten Quartz gibt es in Quartz 2 immer noch zwei Arten von Triggern, jedoch mit geänderten APIs:

  • SimpleTrigger - Ermöglicht das Einstellen von Startzeit, Endzeit und Wiederholungsintervall.

  • CronTrigger - Ermöglicht Unix-Cron-Ausdrücken die Angabe von Datum und Uhrzeit für die Ausführung Ihres Jobs.

SimpleTrigger - Alle 5 Sekunden ausführen.

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

CronTrigger - Alle 5 Sekunden ausführen.

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

Note
Lesen Sie dieseofficial documentation, um weitere Beispiele für Quarz 2-Trigger zu erhalten.

4. Planer

Die Scheduler-Klasse verknüpft sowohl "Job" als auch "Trigger" miteinander und führt sie aus.

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

5. Vollständiges Beispiel

Quartz 2 vollständige Beispiele mit SimpleTrigger und CronTrigger.

SimpleTrigger example - Führen Sie sehr 5 Sekunden aus.

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 - Führen Sie den Job alle 5 Sekunden aus.

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

    }
}

Quellcode herunterladen

Laden Sie es herunter -Quartz2Example.zip (10kb)