欢迎来到DIVCSS5查找CSS资料与学习DIV CSS布局技术!
  spring boot整合quartz实现通过页面操作管理定时任务
 
  说起quartz,大家肯定就会想起那些繁杂的配置,复杂的代码。但是如果项目中要用到定时任务的话,除了quartz似乎也想不出来别的框架了,毕竟人家做的确实优秀。
 
  但是在spring boot中使用quartz,再也不用像以前那么大费周章了。spring boot将quartz的实现细节全都给你封装好了,调用定时任务是需要一个小小的注解@Shedule。
 
  虽然使用起来简单,但是他却能实实在在的达到定时调用代码的作用。不过我们的野心却不止于此。
 
  定时任务通过我们配置的cron表达式定期的执行,但是我们看不到这个任务的执行状态。又比如有些定时任务临时需要取消,或者只是在大半夜跑那么一两次就停止。各种复杂的场景使得纯粹的通过cron表达式已经描述不清我们需要的时间了,此时我们就需要一个可以通过后台操作来掌控管理定时任务的页面了。
 
  在使用之前先了解几个关键词:
 
  Job
 
  通过实现Job类,在实现方法中写我们具体想要定时任务完成的工作,然后交给quartz管理。
 
  JobDetail
 
  Job只负责实现具体任务,所以还需要借助JobDetail来存储一些描述Job的基本信息。
 
  Quartz JobBuilder
 
  为构造JobDetail实体提供的builder-style API。你可以这样使用它来构建一个JobDetail:
 
  @Bean
 
  public JobDetail jobDetail() {
 
  return JobBuilder.newJob()。ofType(SampleJob.class)
 
  。storeDurably()
 
  。withIdentity("Qrtz_Job_Detail")
 
  。withDescription("Invoke Sample Job service…")
 
  。build();
 
  }
 
  Spring JobDetailFactoryBean
 
  在Spring中配置JobDetail的方式:
 
  @Bean
 
  public JobDetailFactoryBean jobDetail() {
 
  JobDetailFactoryBean jobDetailFactory = new JobDetailFactoryBean();
 
  jobDetailFactory.setJobClass(SampleJob.class);
 
  jobDetailFactory.setDescription("Invoke Sample Job service…");
 
  jobDetailFactory.setDurability(true);
 
  return jobDetailFactory;
 
  }
 
  Trigger
 
  触发器,代表一个调度参数的配置,什么时候去调度:
 
  @Bean
 
  public Trigger trigger(JobDetail job) {
 
  return TriggerBuilder.newTrigger()。forJob(job)
 
  。withIdentity("Qrtz_Trigger")
 
  。withDescription("Sample trigger")
 
  。withSchedule(simpleSchedule()。repeatForever()。withIntervalInHours(1))
 
  。build();
 
  }
 
  Scheduler
 
  调度器,通过Job和Trigger来注册一个调度器:
 
  @Bean
 
  public Scheduler scheduler(Trigger trigger, JobDetail job) {
 
  StdSchedulerFactory factory = new StdSchedulerFactory();
 
  factory.initialize(new ClassPathResource("quartz.properties")。getInputStream());
 
  Scheduler scheduler = factory.getScheduler();
 
  scheduler.setJobFactory(springBeanJobFactory());
 
  scheduler.scheduleJob(job, trigger);
 
  scheduler.start();
 
  return scheduler;
 
  }
 
  以上是使用quartz需要知道的一些概念,其实总结起来就三个东西:job|jobDetail、trigger和schedule。也就是任务,触发器和调度器。所以我们只要用代码把他们实例化出来就好了。并且还可以将任务持久化到数据库中,方便我们去各种操作任务。
 
  quartz会在项目启动时自动开始执行可执行状态下的定时任务,而且还可以支持集群。

如需转载,请注明文章出处和来源网址:http://www.divcss5.com/html/h63028.shtml