繁体   English   中英

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

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

我是Spring-boot(版本1.3.6)和Quartz的新手,我想知道使用Spring-scheduler创建任务有什么区别:

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

石英方式

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

在代码中:

  public class HelloJob implements Job {

    public HelloJob() {
    }

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

和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是否提供了更灵活的方式来定义作业,触发器和调度程序,还是Spring Scheduler还有其他更好的方法?

Spring Scheduler是一个抽象层,用于隐藏不同JDK中Executors的实现,如Java SE 1.4,Java SE 5和Java EE环境,它们都有自己的特定实现。

Quartz Scheduler是一个完全成熟的调度框架,它允许基于CRON或简单的周期性任务执行。

Spring Scheduler确实以Trigger的形式提供与Quartz调度程序的集成,以使用Quartz调度程序的全部功能。

在不直接使用Quartz Scheduler特定类的情况下使用Spring Scheduler的优点是抽象层提供了灵活性和松散耦合。

暂无
暂无

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

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