简体   繁体   English

使用Spring的Quartz作业和调度任务之间的区别?

[英]Difference between Quartz Job and Scheduling Tasks with Spring?

I am new to Spring-boot(version 1.3.6) and Quartz and I am wondering what is the difference between making a task with Spring-scheduler : 我是Spring-boot(版本1.3.6)和Quartz的新手,我想知道使用Spring-scheduler创建任务有什么区别:

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

And the 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!");
    }
  }

and the sheduler: 和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);

Does Quartz provide more flexible way to define Jobs, Triggers and Schedulers or Spring Scheduler has something else which is better? Quartz是否提供了更灵活的方式来定义作业,触发器和调度程序,还是Spring Scheduler还有其他更好的方法?

Spring Scheduler is an abstraction layer written to hide the implementations of Executors in different JDKs like Java SE 1.4, Java SE 5 and Java EE environments, which have their own specific implementations. Spring Scheduler是一个抽象层,用于隐藏不同JDK中Executors的实现,如Java SE 1.4,Java SE 5和Java EE环境,它们都有自己的特定实现。

Quartz Scheduler is a fully fledged scheduling framework which allows CRON based or Simple periodic task execution. Quartz Scheduler是一个完全成熟的调度框架,它允许基于CRON或简单的周期性任务执行。

Spring Scheduler does provide integration with Quartz scheduler in the form of a Trigger to use the full functionality of the Quartz scheduler. Spring Scheduler确实以Trigger的形式提供与Quartz调度程序的集成,以使用Quartz调度程序的全部功能。

Advantage of using Spring Scheduler without directly using the Quartz Scheduler specific classes is that the abstraction layer provides flexibility and loose coupling. 在不直接使用Quartz Scheduler特定类的情况下使用Spring Scheduler的优点是抽象层提供了灵活性和松散耦合。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM