web-dev-qa-db-fra.com

Différence entre les tâches Quartz et les tâches de planification avec Spring?

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?

18
Xelian

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.

15
shazin