美文网首页
Quartz的使用demo

Quartz的使用demo

作者: 江南Ryan | 来源:发表于2018-12-20 18:35 被阅读0次
public class HelloQuartz implements Job {
    @Override
    public void execute(JobExecutionContext arg0) throws JobExecutionException {
        System.out.println("Hello Quartz !");
    }
}

使用类:

public class QuartzStartListener {

    public static void main(String[] args) throws InterruptedException {

        StdSchedulerFactory schedulerFactory = new StdSchedulerFactory();
        Scheduler scheduler=null;

        try {
            //通过StdSchedulerFactory获取一个调度器
            scheduler= schedulerFactory.getScheduler();

            //创建JobDetail实例,绑定Job类
            //指明job的名臣,所在组的名称看一集绑定Job类
            JobDetail job = JobBuilder.newJob(HelloQuartz.class).withIdentity("JobName", "JobGroupName").build();
            //定义触发规则,每3秒钟一个,共6次
            Trigger triggerTest = TriggerBuilder.newTrigger().withIdentity("SimpleTrigger", "SimpleTriggerGroup")
                    .withSchedule(SimpleScheduleBuilder.repeatSecondlyForever(3).withRepeatCount(6)).startNow().build();
            Trigger trigger = TriggerBuilder.newTrigger().withIdentity("CronTrigger1", "CronTriggerGroup")
                    .withSchedule(CronScheduleBuilder.cronSchedule("/5 * * * * ?")).startNow().build();

            //把作业和触发器注册到任务调度中
            scheduler.scheduleJob(job,trigger);
            //启动调度
            scheduler.start();

            Thread.sleep(1000*60*2);

            scheduler.shutdown();


        } catch (SchedulerException e) {
            e.printStackTrace();
        }

    }
}

Cons表达式:

序号 说明 是否必填 允许填写的值 允许的通配符

1 秒 是 0-59 , - * /
2 分 是 0-59 , - * /
3 小时 是 0-23 , - * /
4 日 是 1-31 , - * ? / L W
5 月 是 1-12 or JAN-DEC , - * /
6 周 是 1-7 or SUN-SAT , - * ? / L #
7 年 否 empty 或 1970-2099 , - * /

在线cons生成器:
http://cron.qqe2.com/

Spring中对Quartz的使用:

<!-- https://mvnrepository.com/artifact/org.quartz-scheduler/quartz -->
<dependency>
<groupId>org.quartz-scheduler</groupId>
<artifactId>quartz</artifactId>
<version>2.2.1</version>
</dependency>

web.xml中添加监听器,监听QuartzStartListener.class
备注:放到spring中, SchedulerTest.class去掉了main方法,并且继承了ServletContextListener类,实现了他的两个方法:contextInitialized , contextDestroyed

public class QuartzStartListener implements ServletContextListener{
@Override
public void contextInitialized(ServletContextEvent servletContextEvent) {
//通过schedulerFactory获取一个调度器
SchedulerFactory schedulerfactory = new StdSchedulerFactory();
Scheduler scheduler = null;
try {
// 通过schedulerFactory获取一个调度器
scheduler = schedulerfactory.getScheduler();

// 创建jobDetail实例,绑定Job实现类
// 指明job的名称,所在组的名称,以及绑定job类
JobDetail job = JobBuilder.newJob(HelloQuartz.class).withIdentity("JobName", "JobGroupName").build();

// 定义调度触发规则 corn表达式 一分钟执行一次
Trigger trigger = TriggerBuilder.newTrigger().withIdentity("CronTrigger1", "CronTriggerGroup")
.withSchedule(CronScheduleBuilder.cronSchedule("0 */1 * * * ?"))
.startNow().build();

// 把作业和触发器注册到任务调度中
scheduler.scheduleJob(job, trigger);
// 启动调度
scheduler.start();

} catch (SchedulerException e) {
e.printStackTrace();
}
}

@Override
public void contextDestroyed(ServletContextEvent servletContextEvent) {

}
}

web.xml的配置:

<listener>
<listener-class>com.ruixunyun.www.quartz.QuartzStartListener</listener-class>
</listener>

相关文章

网友评论

      本文标题:Quartz的使用demo

      本文链接:https://www.haomeiwen.com/subject/jsrukqtx.html