美文网首页java
Quartz使用总结

Quartz使用总结

作者: 造一个大大的轮子 | 来源:发表于2018-11-16 16:30 被阅读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

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

    相关文章

      网友评论

        本文标题:Quartz使用总结

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