java

Quartz使用总结

2018-11-16  本文已影响20人  造一个大大的轮子

强烈推荐博客: https://www.cnblogs.com/drift-ice/p/3817269.html 博客总结的很好,简洁,扼要.

附上小demo:

Job : 具体的执行任务执行逻辑

public class LeeJob implements Job {
    @Override
    public void execute(JobExecutionContext context) throws JobExecutionException {
        JobDetail jobDetail = context.getJobDetail();
        String name = jobDetail.getJobDataMap().getString("name");
        System.out.println("任务开始执行啦--------------" + name);
    }
}

Scheduler Trigger JobDetail

public class TestJob {
    public static void main(String[] args) {

        try {
            // 创建scheduler(任务调度器)
            Scheduler scheduler = StdSchedulerFactory.getDefaultScheduler();

            // 创建Cron形式的任务执行安排表
            CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule("0/5 * * * * ?");
            Trigger trigger = TriggerBuilder.newTrigger().withIdentity("trigger_3", "trigger_test")
                    .startNow() // 一旦加入scheduler,立即生效
                    .withSchedule(cronScheduleBuilder) // 使用cron表达式构建执行时间表(执行时机)
                    .build();

            JobDetail jobDetail = JobBuilder.newJob(LeeJob.class)
                    .withIdentity("job_6", "job_test")
                    .usingJobData("name", "wangle")
                    .withDescription("这是一个任务执行类")
                    .build();

            // 将触发时机/任务交由任务调度器执行
            scheduler.scheduleJob(jobDetail, trigger);
            scheduler.start();
            Thread.sleep(10000);
            scheduler.shutdown(true);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

Scheduler就是Quartz的大脑,所有任务都是由它来设施。
Schduelr包含一个两个重要组件: JobStoreThreadPool
JobStore是会来存储运行时信息的,包括Trigger``,Schduler,JobDetail,业务锁等。它有多种实现RAMJob(内存实现),JobStoreTX(JDBC,事务由Quartz管理),JobStoreCMT(JDBC,使用容器事务),ClusteredJobStore(集群实现)、TerracottaJobStore.

如果用内存记录定时任务信息,应用重新启动后,定时任务信息将会丢失。比如,用户A通过系统设置1小时后执行Z操作,设置好后的,因系统重新启动,新启动的系统将会丢失“1小时后执行Z操作”的定时任务。
如果,我们需要在系统意外(或非意外)重新启动后,仍保留定时任务信息,可以使用数据库存储定时任务信息
这里也有一篇很好的博客 : https://www.cnblogs.com/nick-huang/p/4861612.html
这里有一个很好的开源项目: https://gitee.com/52itstyle/spring-boot-quartz

这篇博客其实是记录分享两篇优质博客的.记录在此,供以后来查看,回顾.

上一篇下一篇

猜你喜欢

热点阅读