package com.earl.quartz.test;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.junit.Test;
import org.quartz.CronScheduleBuilder;
import org.quartz.CronTrigger;
import org.quartz.DateBuilder;
import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.ScheduleBuilder;
import org.quartz.Scheduler;
import org.quartz.SchedulerException;
import org.quartz.SchedulerFactory;
import org.quartz.SimpleScheduleBuilder;
import org.quartz.SimpleTrigger;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;
import org.quartz.impl.StdSchedulerFactory;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.earl.quartz.test.job.CronJob;
import com.earl.quartz.test.job.HelloJob;
import com.earl.quartz.test.job.SimpleJob;
public class MyTest {
Logger logger=LoggerFactory.getLogger(MyTest.class);
/**
* DateBuilder方法测试
*/
@Test
public void test01(){
Date nowDate=new Date();
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
/*
* evenXxxDate:返回给定日期的下一个整点,整分,整秒
* evenXxxDateAfterNow:返回当前日期的下一个整点,整分,整秒
* evenXxxDateBefore:返回给定日期的上一个整点,整分,整秒
*/
logger.info(sdf.format(nowDate)+"--evenHourDate--"+sdf.format(DateBuilder.evenHourDate(nowDate)));
logger.info(sdf.format(nowDate)+"--evenHourDateAfterNow--"+sdf.format(DateBuilder.evenHourDateAfterNow()));
logger.info(sdf.format(nowDate)+"--evenHourDateBefore--"+sdf.format(DateBuilder.evenHourDateBefore(nowDate)));
logger.info(sdf.format(nowDate)+"--evenMinuteDate--"+sdf.format(DateBuilder.evenMinuteDate(nowDate)));
logger.info(sdf.format(nowDate)+"--evenMinuteDateAfterNow--"+sdf.format(DateBuilder.evenMinuteDateAfterNow()));
logger.info(sdf.format(nowDate)+"--evenMinuteDateBefore--"+sdf.format(DateBuilder.evenMinuteDateBefore(nowDate)));
logger.info(sdf.format(nowDate)+"--evenSecondDate--"+sdf.format(DateBuilder.evenSecondDate(nowDate)));
logger.info(sdf.format(nowDate)+"--evenSecondDateAfterNow--"+sdf.format(DateBuilder.evenSecondDateAfterNow()));
logger.info(sdf.format(nowDate)+"--evenSecondDateBefore--"+sdf.format(DateBuilder.evenSecondDateBefore(nowDate)));
/*
* nextGivenMinuteDate:将给定分钟数加于给定日期,如果给定日期为空,那么当前日期将会被设置,返回得到的日期。如果有进位,则只返回下一个整点日期
* nextGivenSecondDate:将给定秒数加于给定日期,如果给定日期为空,那么当前日期将会被设置,返回得到的日期。给定秒数区间为0~59。如果有进位,则只返回当前分钟的最大秒数。
*/
logger.info(sdf.format(nowDate)+"--nextGivenMinuteDate--"+sdf.format(DateBuilder.nextGivenMinuteDate(nowDate, 10)));
logger.info(sdf.format(nowDate)+"--nextGivenSecondDate--"+sdf.format(DateBuilder.nextGivenSecondDate(nowDate, 59)));
}
@Test
public void test02(){
try {
logger.info("------- 初始化 ----------------------");
//通过工厂方法创建Schedule
Scheduler scheduler=getScheduler();
logger.info("------- 初始化完成 ----------------------");
Date triggerStartTime=DateBuilder.evenSecondDate(new Date());
logger.info("------- 作业调度开始 -------------------");
//获取jobs,triggers
JobDetail job=JobBuilder.newJob(HelloJob.class).withIdentity("job", "group").build();
Trigger trigger=TriggerBuilder.newTrigger().withIdentity("trigger", "group").startAt(triggerStartTime).build();
scheduler.scheduleJob(job, trigger);
logger.info(job.getKey() + " will run at: " + triggerStartTime);
scheduler.start();
logger.info("------- 等待5秒 -------------------");
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
logger.info("------- 准备结束 -------------------");
scheduler.shutdown(true);
logger.info("------- 结束完成 -------------------");
} catch (SchedulerException e) {
e.printStackTrace();
}
}
@Test
public void test03(){
logger.info("-----初始化调度程序-----");
Scheduler scheduler = getScheduler();
logger.info("-----初始化完成-----");
Date startDate=DateBuilder.nextGivenSecondDate(null, 3);
JobDetail job1=JobBuilder.newJob(SimpleJob.class).withIdentity("job1", "group1").build();
SimpleTrigger trigger1=(SimpleTrigger) TriggerBuilder.newTrigger().withIdentity("trigger1", "group1").startAt(startDate).build();
logger.info(job1.getKey()+"------"+trigger1.getStartTime());
try {
Date schedulerDate=scheduler.scheduleJob(job1, trigger1);
logger.info("------调度程序在"+schedulerDate+"时执行------");
logger.info("-------开始执行调度程序--------");
scheduler.start();
try {
logger.info("------- 等待5秒 -------------------");
Thread.sleep(5000);
} catch (InterruptedException e) {
e.printStackTrace();
}
logger.info("------- 准备结束 -------------------");
scheduler.shutdown(true);
logger.info("------- 结束完成 -------------------");
} catch (SchedulerException e) {
e.printStackTrace();
}
}
@Test
public void test04(){
logger.info("--------初始化调度程序-----");
Scheduler scheduler=getScheduler();
logger.info("--------初始化调度程序完成-----");
//返回当前时间加10秒
Date triggerStartTime=DateBuilder.nextGivenSecondDate(null, 10);
JobDetail job=JobBuilder.newJob(SimpleJob.class).withIdentity("job", "group").build();
//设定5秒重复触发一次,直到永远
SimpleTrigger simpleTrigger=(SimpleTrigger) TriggerBuilder.newTrigger().
withIdentity("trigger", "group").startAt(triggerStartTime).
withSchedule(SimpleScheduleBuilder.repeatSecondlyForever(5)).
build();
logger.info(job+"--------"+simpleTrigger.getRepeatCount());
try {
scheduler.scheduleJob(job, simpleTrigger);
logger.info("--------作业调度开始---------");
scheduler.start();
try {
Thread.sleep(100000);
} catch (InterruptedException e) {
e.printStackTrace();
}
logger.info("------- 准备结束 -------------------");
scheduler.shutdown(true);
logger.info("------- 结束完成 -------------------");
} catch (SchedulerException e) {
e.printStackTrace();
}
}
@Test
public void test05(){
logger.info("-----初始化调度程序-----");
Scheduler scheduler = getScheduler();
logger.info("-----初始化完成-----");
/*
* cron表达式有两种格式:
* 1.秒 分 时 月中天 月 周中天 年
* 2.秒 分 时 月中天 月 周中天
*
* 每个周周一及月末最后一天
* * * * L * MON *
*/
JobDetail cronJob=JobBuilder.newJob(CronJob.class).withIdentity("cronJob", "group").build();
CronTrigger cronTrigger=(CronTrigger) TriggerBuilder.newTrigger().withIdentity("cronTrigger", "group").
withSchedule(CronScheduleBuilder.cronSchedule("50 51 15 * * ?")).build();
try {
scheduler.scheduleJob(cronJob, cronTrigger);
scheduler.start();
try {
Thread.sleep(100000);
} catch (InterruptedException e) {
e.printStackTrace();
}
logger.info("------- 准备结束 -------------------");
scheduler.shutdown(true);
logger.info("------- 结束完成 -------------------");
} catch (SchedulerException e) {
e.printStackTrace();
}
}
private Scheduler getScheduler() {
SchedulerFactory factory=new StdSchedulerFactory();
Scheduler scheduler=null;
try {
scheduler=factory.getScheduler();
} catch (SchedulerException e) {
e.printStackTrace();
}
return scheduler;
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
QuartzProject.zip (54个子文件)
QuartzProject
WebContent
META-INF
MANIFEST.MF 39B
WEB-INF
web.xml 1KB
lib
slf4j-log4j12-1.7.7.jar 9KB
spring-beans-4.1.6.RELEASE.jar 692KB
spring-tx-4.1.6.RELEASE.jar 247KB
log4j-1.2.16.jar 470KB
slf4j-api-1.7.7.jar 29KB
mail.jar 509KB
spring-websocket-4.1.6.RELEASE.jar 379KB
spring-expression-4.1.6.RELEASE.jar 253KB
spring-context-4.1.6.RELEASE.jar 1002KB
spring-web-4.1.6.RELEASE.jar 702KB
quartz-jobs-2.2.2.jar 33KB
spring-context-support-4.1.6.RELEASE.jar 174KB
quartz-2.2.2.jar 645KB
commons-logging-1.2.jar 60KB
spring-core-4.1.6.RELEASE.jar 984KB
spring-webmvc-portlet-4.1.6.RELEASE.jar 173KB
spring-webmvc-4.1.6.RELEASE.jar 762KB
.settings
org.eclipse.wst.jsdt.ui.superType.name 6B
org.eclipse.wst.common.project.facet.core.xml 345B
org.eclipse.core.resources.prefs 69B
org.eclipse.wst.common.component 493B
org.eclipse.wst.jsdt.ui.superType.container 49B
.jsdtscope 503B
org.eclipse.jdt.core.prefs 364B
src
log4j.properties 334B
com
earl
quartz
test
job
HelloJob.java 475B
SimpleJob.java 706B
CronJob.java 875B
MyTest.java 8KB
HelloWorld.java 2KB
demo
FileScanDemo.java 2KB
SendMailDemo.java 2KB
listener
FileScanListener.java 514B
spring
job
SimpleJob.java 684B
ExampleJob.java 278B
Test.java 497B
applicationContext.xml 4KB
.project 1KB
.classpath 2KB
build
classes
log4j.properties 334B
com
earl
quartz
test
job
SimpleJob.class 1KB
HelloJob.class 988B
CronJob.class 2KB
HelloWorld.class 3KB
MyTest.class 7KB
demo
SendMailDemo.class 3KB
listener
FileScanListener.class 1KB
FileScanDemo.class 3KB
spring
Test.class 976B
job
SimpleJob.class 1KB
ExampleJob.class 875B
applicationContext.xml 4KB
共 54 条
- 1
资源评论
- junquinchen2016-11-23不错的资源 谢谢分享
- jonnie44552017-10-12可以用,是最新的配置
- datouzhong2017-06-20还可以 功能上实现了
Earl_yuan
- 粉丝: 43
- 资源: 11
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功