quartz2.2.1 example 02代码分析

package com.quartz.fsl.test.exaple2;


import java.util.Date;
import org.quartz.Job;
import org.quartz.JobDetail;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.JobKey;
import org.quartz.impl.triggers.SimpleTriggerImpl;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;


public class SimpleJob implements Job {


private static Logger _log = LoggerFactory.getLogger(SimpleJob.class);


public void execute(JobExecutionContext paramJobExecutionContext)
throws JobExecutionException {
JobDetail jobdetail= paramJobExecutionContext.getJobDetail();
SimpleTriggerImpl triggerimpl=(SimpleTriggerImpl) paramJobExecutionContext.getTrigger();

JobKey jobKey =jobdetail.getKey();
System.out.println(new Date()+"进入任务:"+jobKey+"---"+triggerimpl.getName()+"所在组:"+triggerimpl.getGroup());
}

}

---------------------------------------------------------------

package com.quartz.fsl.test.exaple2;


import java.util.Date;
import org.quartz.DateBuilder;
import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.JobKey;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
import org.quartz.SchedulerMetaData;
import org.quartz.SimpleScheduleBuilder;
import org.quartz.SimpleTrigger;
import org.quartz.TriggerBuilder;
import org.quartz.impl.StdSchedulerFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;


public class SimpleTriggerExample {
public static void main(String[] args) {
SimpleTriggerExample example = new SimpleTriggerExample();
try {
example.run();
} catch (Exception e) {
e.printStackTrace();
}
}


private void run() throws Exception {
Logger log = LoggerFactory.getLogger(SimpleTriggerExample.class);


SchedulerFactory sf = new StdSchedulerFactory();
Scheduler sched = sf.getScheduler();


//DateBuilder.evenMinuteDate(null); //当前分钟+1
Date startTime = DateBuilder.nextGivenSecondDate(null, 15);


//第1个job
JobDetail job = JobBuilder.newJob(SimpleJob.class).withIdentity("job1",
"group1").build();
SimpleTrigger trigger = (SimpleTrigger) TriggerBuilder.newTrigger()
.withIdentity("trigger1", "group1").startAt(startTime).build();
Date ft = sched.scheduleJob(job, trigger);
log.info(job.getKey() + " 将会运行时间: " + ft + " 重复次数: "
+ trigger.getRepeatCount() + " 次,每隔"
+ (trigger.getRepeatInterval() / 1000L) + " 秒");


//第2个job
job = JobBuilder.newJob(SimpleJob.class).withIdentity("job2", "group1").build();
trigger = (SimpleTrigger) TriggerBuilder.newTrigger().withIdentity("trigger2", "group1").startAt(startTime).build();
ft = sched.scheduleJob(job, trigger);
log.info(job.getKey() + " 将会运行时间: " + ft + " 重复次数: "
+ trigger.getRepeatCount() + " 次,每隔"
+ (trigger.getRepeatInterval() / 1000L) + " 秒");

//第3个job
job = JobBuilder.newJob(SimpleJob.class).withIdentity("job3", "group1").build();


trigger = (SimpleTrigger) TriggerBuilder.newTrigger().withIdentity(
"trigger3", "group1").startAt(startTime).withSchedule(
SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(3).withRepeatCount(7)
).build();


ft = sched.scheduleJob(job, trigger);
log.info(job.getKey() + " 将会运行时间: " + ft + " 重复次数: "
+ trigger.getRepeatCount() + " 次,每隔"
+ (trigger.getRepeatInterval() / 1000L) + " 秒");

trigger = (SimpleTrigger) TriggerBuilder.newTrigger().withIdentity(
"trigger3", "group2").startAt(startTime).withSchedule(
SimpleScheduleBuilder.simpleSchedule()
.withIntervalInSeconds(10).withRepeatCount(2)).forJob(
job).build();


ft = sched.scheduleJob(trigger);
log.info(job.getKey() + " 将会运行时间: " + ft + " 重复次数: "
+ trigger.getRepeatCount() + " 次,每隔"
+ (trigger.getRepeatInterval() / 1000L) + " 秒");


//第4个job
job = JobBuilder.newJob(SimpleJob.class).withIdentity("job4", "group1").build();


trigger = (SimpleTrigger) TriggerBuilder.newTrigger().withIdentity(
"trigger4", "group1").startAt(startTime).withSchedule(
SimpleScheduleBuilder.simpleSchedule()
.withIntervalInSeconds(10).withRepeatCount(5)).build();


ft = sched.scheduleJob(job, trigger);
log.info(job.getKey() + " 将会运行时间: " + ft + " 重复次数: "
+ trigger.getRepeatCount() + " 次,每隔"
+ (trigger.getRepeatInterval() / 1000L) + " 秒");


//第5个job
job = JobBuilder.newJob(SimpleJob.class).withIdentity("job5", "group1")
.build();


trigger = (SimpleTrigger) TriggerBuilder.newTrigger().withIdentity(
"trigger5", "group1").startAt(
DateBuilder.futureDate(5, DateBuilder.IntervalUnit.MINUTE))
.build();


ft = sched.scheduleJob(job, trigger);
log.info(job.getKey() + " 将会运行时间: " + ft + " 重复次数: "
+ trigger.getRepeatCount() + " 次,每隔"
+ (trigger.getRepeatInterval() / 1000L) + " 秒");


//第6个job
job = JobBuilder.newJob(SimpleJob.class).withIdentity("job6", "group1")
.build();


trigger = (SimpleTrigger) TriggerBuilder.newTrigger().withIdentity(
"trigger6", "group1").startAt(startTime).withSchedule(
SimpleScheduleBuilder.simpleSchedule()
.withIntervalInSeconds(40).repeatForever()).build();


ft = sched.scheduleJob(job, trigger);
log.info(job.getKey() + " 将会运行时间: " + ft + " 重复次数: "
+ trigger.getRepeatCount() + " 次,每隔"
+ (trigger.getRepeatInterval() / 1000L) + " 秒");


log.info("------- 手工start调度----------------");
sched.start();


//第7个job
job = JobBuilder.newJob(SimpleJob.class).withIdentity("job7", "group1").build();


trigger = (SimpleTrigger) TriggerBuilder.newTrigger().withIdentity(
"trigger7", "group1").startAt(startTime).withSchedule(
SimpleScheduleBuilder.simpleSchedule().withIntervalInMinutes(2)
.withRepeatCount(4)).build();


ft = sched.scheduleJob(job, trigger);
log.info(job.getKey() + " 将会运行时间: " + ft + " 重复次数: "
+ trigger.getRepeatCount() + " 次,每隔"
+ (trigger.getRepeatInterval() / 1000L) + " 秒");


//第8个job
job = JobBuilder.newJob(SimpleJob.class).withIdentity("job8", "group1")
.storeDurably().build(); //即使没有Trigger关联时,也不需要删除该JobDetail


sched.addJob(job, true);


sched.triggerJob(JobKey.jobKey("job8", "group1"));
log.info(job.getKey() + " 将会运行时间: " + ft + " 重复次数: "
+ trigger.getRepeatCount() + " 次,每隔"
+ (trigger.getRepeatInterval() / 1000L) + " 秒");


log.info("-------睡眠30秒... --------------");
try {
Thread.sleep(30000L);
} catch (Exception e) {
}


log.info("------- 修改并重新trigger7调度... --------------------");
trigger = (SimpleTrigger) TriggerBuilder.newTrigger().withIdentity(
"trigger7", "group1").startAt(startTime).withSchedule(
SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(11)
.withRepeatCount(12)).build();
ft = sched.rescheduleJob(trigger.getKey(), trigger);
log.info(job.getKey() + " 将会运行时间: " + ft + " 重复次数: "
+ trigger.getRepeatCount() + " 次,每隔"
+ (trigger.getRepeatInterval()/1000L) + " 秒");



log.info("-------睡眠5分钟... ------------");
try {
Thread.sleep(300L * 1000L);
} catch (Exception e) {
}


log.info("------- 关闭current调度实例---------------------");
sched.shutdown(true);


SchedulerMetaData metaData = sched.getMetaData();
log.info("Executed " + metaData.getNumberOfJobsExecuted() + " jobs.");
}
}

------------------------------------------测试结果



[quartz1.6.6] INFO [main] org.quartz.impl.StdSchedulerFactory.instantiate(1339) | Quartz scheduler 'DefaultQuartzScheduler' initialized from default resource file in Quartz package: 'quartz.properties'
[quartz1.6.6] INFO [main] org.quartz.impl.StdSchedulerFactory.instantiate(1343) | Quartz scheduler version: 2.2.1
[quartz1.6.6] INFO [main] com.quartz.fsl.test.exaple2.SimpleTriggerExample.run(44) | group1.job1 将会运行时间: Fri Jun 27 15:46:30 CST 2014 重复次数: 0 次,每隔0 秒
[quartz1.6.6] INFO [main] com.quartz.fsl.test.exaple2.SimpleTriggerExample.run(52) | group1.job2 将会运行时间: Fri Jun 27 15:46:30 CST 2014 重复次数: 0 次,每隔0 秒
[quartz1.6.6] INFO [main] com.quartz.fsl.test.exaple2.SimpleTriggerExample.run(65) | group1.job3 将会运行时间: Fri Jun 27 15:46:30 CST 2014 重复次数: 7 次,每隔3 秒
[quartz1.6.6] INFO [main] com.quartz.fsl.test.exaple2.SimpleTriggerExample.run(76) | group1.job3 将会运行时间: Fri Jun 27 15:46:30 CST 2014 重复次数: 2 次,每隔10 秒
[quartz1.6.6] INFO [main] com.quartz.fsl.test.exaple2.SimpleTriggerExample.run(89) | group1.job4 将会运行时间: Fri Jun 27 15:46:30 CST 2014 重复次数: 5 次,每隔10 秒
[quartz1.6.6] INFO [main] com.quartz.fsl.test.exaple2.SimpleTriggerExample.run(103) | group1.job5 将会运行时间: Fri Jun 27 15:51:22 CST 2014 重复次数: 0 次,每隔0 秒
[quartz1.6.6] INFO [main] com.quartz.fsl.test.exaple2.SimpleTriggerExample.run(117) | group1.job6 将会运行时间: Fri Jun 27 15:46:30 CST 2014 重复次数: -1 次,每隔40 秒
[quartz1.6.6] INFO [main] com.quartz.fsl.test.exaple2.SimpleTriggerExample.run(121) | ------- 手工start调度----------------
[quartz1.6.6] INFO [main] org.quartz.core.QuartzScheduler.start(575) | Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED started.
[quartz1.6.6] INFO [main] com.quartz.fsl.test.exaple2.SimpleTriggerExample.run(133) | group1.job7 将会运行时间: Fri Jun 27 15:46:30 CST 2014 重复次数: 4 次,每隔120 秒
[quartz1.6.6] INFO [main] com.quartz.fsl.test.exaple2.SimpleTriggerExample.run(144) | group1.job8 将会运行时间: Fri Jun 27 15:46:30 CST 2014 重复次数: 4 次,每隔120 秒
[quartz1.6.6] INFO [main] com.quartz.fsl.test.exaple2.SimpleTriggerExample.run(148) | -------睡眠30秒... --------------
Fri Jun 27 15:46:22 CST 2014进入任务:group1.job8---MT_o2x02f7yqke所在组:DEFAULT
Fri Jun 27 15:46:30 CST 2014进入任务:group1.job1---trigger1所在组:group1
Fri Jun 27 15:46:30 CST 2014进入任务:group1.job2---trigger2所在组:group1
Fri Jun 27 15:46:30 CST 2014进入任务:group1.job3---trigger3所在组:group1
Fri Jun 27 15:46:30 CST 2014进入任务:group1.job6---trigger6所在组:group1
Fri Jun 27 15:46:30 CST 2014进入任务:group1.job3---trigger3所在组:group2
Fri Jun 27 15:46:30 CST 2014进入任务:group1.job7---trigger7所在组:group1
Fri Jun 27 15:46:30 CST 2014进入任务:group1.job4---trigger4所在组:group1
Fri Jun 27 15:46:33 CST 2014进入任务:group1.job3---trigger3所在组:group1
Fri Jun 27 15:46:36 CST 2014进入任务:group1.job3---trigger3所在组:group1
Fri Jun 27 15:46:39 CST 2014进入任务:group1.job3---trigger3所在组:group1
Fri Jun 27 15:46:40 CST 2014进入任务:group1.job4---trigger4所在组:group1
Fri Jun 27 15:46:40 CST 2014进入任务:group1.job3---trigger3所在组:group2
Fri Jun 27 15:46:42 CST 2014进入任务:group1.job3---trigger3所在组:group1
Fri Jun 27 15:46:45 CST 2014进入任务:group1.job3---trigger3所在组:group1
Fri Jun 27 15:46:48 CST 2014进入任务:group1.job3---trigger3所在组:group1
Fri Jun 27 15:46:50 CST 2014进入任务:group1.job4---trigger4所在组:group1
Fri Jun 27 15:46:50 CST 2014进入任务:group1.job3---trigger3所在组:group2
Fri Jun 27 15:46:51 CST 2014进入任务:group1.job3---trigger3所在组:group1
[quartz1.6.6] INFO [main] com.quartz.fsl.test.exaple2.SimpleTriggerExample.run(154) | ------- 修改并重新trigger7调度... --------------------
[quartz1.6.6] INFO [main] com.quartz.fsl.test.exaple2.SimpleTriggerExample.run(160) | group1.job8 将会运行时间: Fri Jun 27 15:46:30 CST 2014 重复次数: 12 次,每隔11000 秒
Fri Jun 27 15:46:52 CST 2014进入任务:group1.job7---trigger7所在组:group1
Fri Jun 27 15:46:52 CST 2014进入任务:group1.job7---trigger7所在组:group1
[quartz1.6.6] INFO [main] com.quartz.fsl.test.exaple2.SimpleTriggerExample.run(165) | -------睡眠5分钟... ------------
Fri Jun 27 15:46:52 CST 2014进入任务:group1.job7---trigger7所在组:group1
Fri Jun 27 15:47:00 CST 2014进入任务:group1.job4---trigger4所在组:group1
Fri Jun 27 15:47:03 CST 2014进入任务:group1.job7---trigger7所在组:group1
Fri Jun 27 15:47:10 CST 2014进入任务:group1.job4---trigger4所在组:group1
Fri Jun 27 15:47:10 CST 2014进入任务:group1.job6---trigger6所在组:group1
Fri Jun 27 15:47:14 CST 2014进入任务:group1.job7---trigger7所在组:group1
Fri Jun 27 15:47:20 CST 2014进入任务:group1.job4---trigger4所在组:group1
Fri Jun 27 15:47:25 CST 2014进入任务:group1.job7---trigger7所在组:group1
Fri Jun 27 15:47:36 CST 2014进入任务:group1.job7---trigger7所在组:group1
Fri Jun 27 15:47:47 CST 2014进入任务:group1.job7---trigger7所在组:group1
Fri Jun 27 15:47:50 CST 2014进入任务:group1.job6---trigger6所在组:group1
Fri Jun 27 15:47:58 CST 2014进入任务:group1.job7---trigger7所在组:group1
Fri Jun 27 15:48:09 CST 2014进入任务:group1.job7---trigger7所在组:group1
Fri Jun 27 15:48:20 CST 2014进入任务:group1.job7---trigger7所在组:group1
Fri Jun 27 15:48:30 CST 2014进入任务:group1.job6---trigger6所在组:group1
Fri Jun 27 15:48:31 CST 2014进入任务:group1.job7---trigger7所在组:group1
Fri Jun 27 15:48:42 CST 2014进入任务:group1.job7---trigger7所在组:group1
Fri Jun 27 15:49:10 CST 2014进入任务:group1.job6---trigger6所在组:group1
Fri Jun 27 15:49:50 CST 2014进入任务:group1.job6---trigger6所在组:group1
Fri Jun 27 15:50:30 CST 2014进入任务:group1.job6---trigger6所在组:group1
Fri Jun 27 15:51:10 CST 2014进入任务:group1.job6---trigger6所在组:group1
Fri Jun 27 15:51:22 CST 2014进入任务:group1.job5---trigger5所在组:group1
Fri Jun 27 15:51:50 CST 2014进入任务:group1.job6---trigger6所在组:group1
[quartz1.6.6] INFO [main] com.quartz.fsl.test.exaple2.SimpleTriggerExample.run(171) | ------- 关闭current调度实例---------------------
[quartz1.6.6] INFO [main] org.quartz.core.QuartzScheduler.shutdown(694) | Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED shutting down.
[quartz1.6.6] INFO [main] org.quartz.core.QuartzScheduler.standby(613) | Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED paused.
[quartz1.6.6] INFO [main] org.quartz.core.QuartzScheduler.shutdown(771) | Scheduler DefaultQuartzScheduler_$_NON_CLUSTERED shutdown complete.
[quartz1.6.6] INFO [main] com.quartz.fsl.test.exaple2.SimpleTriggerExample.run(175) | Executed 44 jobs.



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
quartz.net 是一个开源的调度框架,用于在 .NET 应用程序中实现任务的调度和管理。它提供了丰富的功能和灵活的配置选项,可以满足各种任务调度的需求。 Quartz.net 的源代码是用 C# 编写的,它包含了框架的核心逻辑和各种扩展功能的实现。源代码中的主要模块包括调度器(Scheduler)、触发器(Trigger)、任务(Job)、作业存储(Store)等。 调度器(Scheduler)是 Quartz.net 的核心组件,负责管理和控制任务的调度。它根据设定的时间规则和条件,自动触发任务的执行。通过调度器可以添加、删除、修改任务,以及查询任务的执行记录和状态。 触发器(Trigger)用于定义任务执行的时间规则。Quartz.net 提供了多种类型的触发器,如简单触发器(SimpleTrigger)、日历触发器(CalendarTrigger)、Cron 触发器(CronTrigger)等。用户可以根据任务的需求选择合适的触发器类型,并设置触发器的属性和参数。 任务(Job)是要执行的具体工作代码Quartz.net 允许用户定义自己的任务,通过实现 IJob 接口来执行任务逻辑。任务可以在任务类中定义一些属性和方法,用于接收和处理任务的参数和状态。 作业存储(Store)是用于存储任务和触发器的持久化模块。Quartz.net 支持多种作业存储器,如内存存储器(MemoryStore)、数据库存储器(AdoJobStore)等。用户可以根据自己的需求选择合适的作业存储器,并配置连接字符串等参数。 总的来说,Quartz.net 的源代码是一个功能丰富且高度可扩展的调度框架,它提供了灵活的任务调度管理功能。通过深入理解源代码,用户可以更好地理解框架的工作原理,并在需求变更时进行二次开发和定制化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值