gpt4 book ai didi

java - Quartz Job 和 Spring 调度任务的区别?

转载 作者:IT老高 更新时间:2023-10-28 13:51:35 24 4
gpt4 key购买 nike

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

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

还有 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

在代码中:

  public class HelloJob implements Job {

public HelloJob() {
}

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

和调度器:

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 和 Schedulers 或者 Spring Scheduler 有其他更好的方法?

最佳答案

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

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

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

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

关于java - Quartz Job 和 Spring 调度任务的区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38564101/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com