Je suis nouveau sur Spring-boot (version 1.3.6) et Quartz et je me demande quelle est la différence entre faire une tâche avec Spring-scheduler :
@Scheduled(fixedRate = 40000)
public void reportCurrentTime() {
System.out.println("Hello World");
}
Et le façon Quartz :
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
Dans du code:
public class HelloJob implements Job {
public HelloJob() {
}
public void execute(JobExecutionContext context)
throws JobExecutionException
{
System.err.println("Hello!");
}
}
et le 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);
Quartz offre-t-il un moyen plus flexible de définir des tâches, des déclencheurs et des planificateurs ou Spring Scheduler a-t-il autre chose de mieux?
Spring Scheduler est une couche d'abstraction écrite pour masquer les implémentations des exécuteurs dans différents JDK comme Java SE 1.4, Java SE 5 et Java Environnements EE, qui ont leurs propres implémentations spécifiques.
Quartz Scheduler est un cadre de planification à part entière qui permet l'exécution de tâches périodiques basées sur CRON ou simples.
Spring Scheduler fournit une intégration avec Quartz Scheduler sous la forme d'un Trigger
pour utiliser toutes les fonctionnalités du Quartz Scheduler.
L'avantage d'utiliser Spring Scheduler sans utiliser directement les classes spécifiques de Quartz Scheduler est que la couche d'abstraction offre une flexibilité et un couplage lâche.