2016-07-25 7 views
14

: Ich bin Spring-Boot (Version 1.3.6) und Quarz und ich frage mich, was der Unterschied ist eine Aufgabe mit Spring-scheduler zwischen Herstellung:Unterschied zwischen Quartz Job und Scheduling Tasks mit Spring?

@Scheduled(fixedRate = 40000) 
    public void reportCurrentTime() { 
     System.out.println("Hello World"); 
    } 

Und die Quartz way:

0. Create sheduler. 
1. Job which implements Job interface. 
2. Create JobDetail which is instance of the job using the builder org.quartz.JobBuilder.newJob(MyJob.class) 
3. Create a Triger 
4. Finally set the job and the trigger to the scheduler 

in Code:

public class HelloJob implements Job { 

    public HelloJob() { 
    } 

    public void execute(JobExecutionContext context) 
     throws JobExecutionException 
    { 
     System.err.println("Hello!"); 
    } 
    } 

und die sheduler:

SchedulerFactory schedFact = new org.quartz.impl.StdSchedulerFactory(); 

    Scheduler sched = schedFact.getScheduler(); 

    sched.start(); 

    // define the job and tie it to our HelloJob class 
    JobDetail job = newJob(HelloJob.class) 
     .withIdentity("myJob", "group1") 
     .build(); 

    // Trigger the job to run now, and then every 40 seconds 
    Trigger trigger = newTrigger() 
     .withIdentity("myTrigger", "group1") 
     .startNow() 
     .withSchedule(simpleSchedule() 
      .withIntervalInSeconds(40) 
      .repeatForever()) 
     .build(); 

    // Tell quartz to schedule the job using our trigger 
    sched.scheduleJob(job, trigger); 

Bietet Quartz flexiblere Möglichkeiten zum Definieren von Jobs, Triggern und Schedulern oder Spring Scheduler hat etwas anderes, was besser ist?

Antwort

11

Spring Scheduler ist eine Abstraktionsschicht, die geschrieben wurde, um die Implementierungen von Executoren in verschiedenen JDKs wie Java SE 1.4, Java SE 5 und Java EE-Umgebungen zu verbergen, die ihre eigenen spezifischen Implementierungen haben.

Quartz Scheduler ist ein vollwertiges Scheduling-Framework, das CRON-basierte oder einfache periodische Aufgabenausführung ermöglicht.

Spring Scheduler bietet Integration mit Quartz-Scheduler in Form einer Trigger, um die volle Funktionalität des Quartz-Scheduler zu verwenden.

Vorteil der Verwendung von Spring Scheduler ohne direkte Verwendung der Quartz Scheduler-spezifischen Klassen ist, dass die Abstraktionsschicht Flexibilität und lose Kopplung bietet.

Verwandte Themen