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");
}
和 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 是否提供了更灵活的方式来定义作业、触发器和调度程序,或者 Spring 调度程序是否有其他更好的方法?
Spring Scheduler 是一个抽象层,用于隐藏不同 JDK 中执行器的实现,例如 Java SE 1.4、Java SE 5 和 Java EE 环境,它们有自己的特定实现。
Quartz Scheduler 是一个成熟的调度框架,它允许基于 CRON 或简单的周期性任务执行。
Spring Scheduler 确实以 Trigger
的形式提供与 Quartz 调度程序的集成,以使用 Quartz 调度程序的全部功能。
使用 Spring Scheduler 而不直接使用特定的 Quartz Scheduler 类 的优点是抽象层提供了灵活性和松耦合。
我是 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 是否提供了更灵活的方式来定义作业、触发器和调度程序,或者 Spring 调度程序是否有其他更好的方法?
Spring Scheduler 是一个抽象层,用于隐藏不同 JDK 中执行器的实现,例如 Java SE 1.4、Java SE 5 和 Java EE 环境,它们有自己的特定实现。
Quartz Scheduler 是一个成熟的调度框架,它允许基于 CRON 或简单的周期性任务执行。
Spring Scheduler 确实以 Trigger
的形式提供与 Quartz 调度程序的集成,以使用 Quartz 调度程序的全部功能。
使用 Spring Scheduler 而不直接使用特定的 Quartz Scheduler 类 的优点是抽象层提供了灵活性和松耦合。