quartz2.2.1 example 06代码分析

package com.quartz.fsl.test.example6;


import java.util.Date;
import org.quartz.Job;
import org.quartz.JobDataMap;
import org.quartz.JobDetail;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.JobKey;


import com.qdwb.mlxc.util.LogSelf;


public class BadJob1 implements Job {
private int calculation; // 计算;估计;计算的结果;深思熟虑


public void execute(JobExecutionContext context)
throws JobExecutionException {
JobDetail jobdetail=context.getJobDetail();

JobKey jobKey = jobdetail.getKey();
JobDataMap dataMap = jobdetail.getJobDataMap();


int denominator = dataMap.getInt("denominator"); //denominator是分母的意思
LogSelf.fslLog.info("---" + jobKey + " executing at " + new Date()
+ " with denominator " + denominator);
try {
this.calculation = (4815 / denominator);
} catch (Exception e) {
LogSelf.fslLog.info("--- Error in job1!");
JobExecutionException e2 = new JobExecutionException(e);


dataMap.put("denominator", "1");
//1 立即重新执行任务
e2.setRefireImmediately(true);
throw e2;
}


LogSelf.fslLog.info("---" + jobKey + " completed at " + new Date());
}

}

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

package com.quartz.fsl.test.example6;


import java.util.Date;


import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.quartz.JobKey;


import com.qdwb.mlxc.util.LogSelf;


public class BadJob2 implements Job {
private int calculation;


public void execute(JobExecutionContext context)
throws JobExecutionException {
JobKey jobKey = context.getJobDetail().getKey();
LogSelf.fslLog.info("---" + jobKey + " executing at " + new Date());
try {
int zero = 0;
this.calculation = (4815 / zero);
} catch (Exception e) {
LogSelf.fslLog.info("--- Error in job2!");
JobExecutionException e2 = new JobExecutionException(e);
//2 立即停止所有相关这个任务的触发器
e2.setUnscheduleAllTriggers(true);
throw e2;
}


LogSelf.fslLog.info("---" + jobKey + " completed at " + new Date());
}


}

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

package com.quartz.fsl.test.example6;


import java.util.Date;
import org.quartz.DateBuilder;
import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.Scheduler;
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 com.qdwb.mlxc.util.LogSelf;


public class JobExceptionExample {
public void run() throws Exception {


SchedulerFactory sf = new StdSchedulerFactory();
Scheduler sched = sf.getScheduler();
Date startTime = DateBuilder.nextGivenSecondDate(null, 15);


//第1个job 
JobDetail job = JobBuilder.newJob(BadJob1.class).withIdentity("badJob1", "group1").usingJobData("denominator", "0").build();
//simpleTrigger:(每10秒执行一次,一直执行)
SimpleTrigger trigger = (SimpleTrigger) TriggerBuilder.newTrigger()
.withIdentity("trigger1", "group1").startAt(startTime)
.withSchedule(
SimpleScheduleBuilder.simpleSchedule()
.withIntervalInSeconds(10).repeatForever())
.build();


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


//第2个job
job = JobBuilder.newJob(BadJob2.class)
.withIdentity("badJob2", "group1").build();


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


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


LogSelf.fslLog.info("------- 手动触发 Scheduler ----------------"+new Date());


sched.start();


LogSelf.fslLog.info("------- 睡眠30秒-----------------");
try {
Thread.sleep(30000L);
} catch (Exception e) {
}
LogSelf.fslLog.info("------- Shutdown Complete -----------------waitForJobsToComplete:false");
//scheduler.shutdown(true);true表示等待本次任务执行完成后停止,false:表示不管本次任务是事执行停止,都停止掉
sched.shutdown(false);


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


public static void main(String[] args) throws Exception {
JobExceptionExample example = new JobExceptionExample();
example.run();
}
}


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

[quartz2.2.1][INFO ] 2014-06-30 14:11:01 -- main group1.badJob1 将会运行时间: Mon Jun 30 14:11:15 CST 2014 重复次数: -1 次,每隔10 秒
[quartz2.2.1][INFO ] 2014-06-30 14:11:01 -- main group1.badJob2 将会运行时间: Mon Jun 30 14:11:15 CST 2014 重复次数: -1 次,每隔6 秒
[quartz2.2.1][INFO ] 2014-06-30 14:11:01 -- main ------- 手动触发 Scheduler ----------------Mon Jun 30 14:11:01 CST 2014
[quartz2.2.1][INFO ] 2014-06-30 14:11:01 -- main ------- 睡眠30秒-----------------
[quartz2.2.1][INFO ] 2014-06-30 14:11:15 -- DefaultQuartzScheduler_Worker-2 ---group1.badJob2 executing at Mon Jun 30 14:11:15 CST 2014
[quartz2.2.1][INFO ] 2014-06-30 14:11:15 -- DefaultQuartzScheduler_Worker-2 --- Error in job2!
[quartz2.2.1][INFO ] 2014-06-30 14:11:15 -- DefaultQuartzScheduler_Worker-1 ---group1.badJob1 executing at Mon Jun 30 14:11:15 CST 2014 with denominator 0
[quartz2.2.1][INFO ] 2014-06-30 14:11:15 -- DefaultQuartzScheduler_Worker-1 --- Error in job1!
[quartz2.2.1][INFO ] 2014-06-30 14:11:15 -- DefaultQuartzScheduler_Worker-1 ---group1.badJob1 executing at Mon Jun 30 14:11:15 CST 2014 with denominator 1
[quartz2.2.1][INFO ] 2014-06-30 14:11:15 -- DefaultQuartzScheduler_Worker-1 ---group1.badJob1 completed at Mon Jun 30 14:11:15 CST 2014
[quartz2.2.1][INFO ] 2014-06-30 14:11:25 -- DefaultQuartzScheduler_Worker-3 ---group1.badJob1 executing at Mon Jun 30 14:11:25 CST 2014 with denominator 0
[quartz2.2.1][INFO ] 2014-06-30 14:11:25 -- DefaultQuartzScheduler_Worker-3 --- Error in job1!
[quartz2.2.1][INFO ] 2014-06-30 14:11:25 -- DefaultQuartzScheduler_Worker-3 ---group1.badJob1 executing at Mon Jun 30 14:11:25 CST 2014 with denominator 1
[quartz2.2.1][INFO ] 2014-06-30 14:11:25 -- DefaultQuartzScheduler_Worker-3 ---group1.badJob1 completed at Mon Jun 30 14:11:25 CST 2014
[quartz2.2.1][INFO ] 2014-06-30 14:11:31 -- main ------- Shutdown Complete -----------------waitForJobsToComplete:false
[quartz2.2.1][INFO ] 2014-06-30 14:11:31 -- main Executed 5 jobs.




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值