当前位置: 首页 > 面试题库 >

Quartz Job和带有Spring的计划任务之间的区别?

彭开畅
2023-03-14
问题内容

我是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是否提供了更灵活的方式来定义Jobs,Triggers和Scheduler,或者Spring Scheduler还有其他更好的方法?


问题答案:

Spring Scheduler是一个抽象层,用于隐藏执行程序在不同JDK(如Java SE 1.4,Java SE 5和Java
EE环境)中的实现,这些JDK具有各自的特定实现。

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

Spring Scheduler确实提供了与Quartz Scheduler的集成,Trigger以使用Quartz Scheduler的全部功能。

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



 类似资料:
  • 我在context.xml文件中定义了一个Spring调度任务,它每分钟运行一次。该任务调用postgres存储过程。存储过程运行时可以持续一分钟以上。如果当前运行没有完成,spring框架会调用相同的调度程序吗?谢谢,

  • 我们有一个Spring Boot应用程序,并有计划的任务。 我们希望在多个服务器上部署我们的应用程序,因此将有多个应用程序实例。 如何将 Spring 配置为仅在指定的服务器上运行计划任务?

  • 本文向大家介绍长期计划程序和短期计划程序之间的区别。,包括了长期计划程序和短期计划程序之间的区别。的使用技巧和注意事项,需要的朋友参考一下 长期计划者 长期调度程序也称为JOB调度程序。它维护程序/作业的队列,这些队列被选择供系统处理。根据调度机制选择程序并进行处理。长期调度程序控制着多重编程的程度。 短期计划者 短期调度程序也称为CPU调度程序。它维护上下文切换,并且CPU在多个线程之间切换。短

  • 我想每天使用Spring Boot发送电子邮件,用户指定发送时间,我使用石英来安排我的工作。电子邮件的收件人有(id、emailAddress、截止日期)电子邮件将发送给截止日期=今天X...(用户指定X)。例如:用户指定X是1号,所以我们对明天有截止日期的人感兴趣。 第1天:应用程序向截止日期为今天1的人发送电子邮件。。第二天:我希望应用程序在第二天将电子邮件发送给新的收件人,但使用下面的代码,

  • 我是Spring boot(1.3.6版)和Quartz的新手,我想知道使用Spring调度程序生成任务有什么区别: 而石英方式: 在代码中: 和牧羊人: Quartz是否提供了更灵活的方法来定义作业、触发器和调度器,或者Spring Scheduler还有更好的方法?

  • 我们有10个计划任务,配置为每20秒运行一次,带有以下注释(它们在晚上停止,因为依赖系统在早上4点重新启动): 我们有一个线程池taks调度器,配置池大小为10: 有时在一天中,其中一项任务在一两个小时内没有执行,然后继续定期执行。有没有可能其中一个任务正在阻止其他任务?我怎样才能知道情况是否如此?