Skip to content

核心概念 ​

  • Job: Job是Quartz中的一个函数式接口,其中的execute方法就是我们需要具体实现的业务任务逻辑。

  • JobDetail: JobDetail是用于绑定Job,并对Job进行描述,其中提供了很多描述性属性如: name 任务名称 group 任务组 description 任务描述 jobClass 任务类 jobDataMap 任务自定义参数

  • Trigger: Trigger是触发器,用于定义Job的执行时间、执行间隔、执行频率等。 在Quartz中主要有四种类型的Trigger:SimpleTrigger、CronTrigger、DataIntervalTrigger和NthIncludedTrigger。

  • Scheduler: Scheduler是调度器,用于实际协调和组织JobDetail与Trigger。 Quartz提供了DirectSchedulerFactory和StdSchedulerFactory等工厂类,用于支持Scheduler相关对象的产生

  • 概念之间的关系

    image-20240320014352034

代码示例 ​

java
@Slf4j
@Component
public class AfterPromoJob extends QuartzJobBean {
    @Autowired
    PromoService promoService;
    @Override
    protected void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException {
        log.info("定时任务开始,删除缓存……");
//        promoService.clearRedisCache();
        System.out.println("删除缓存");
        log.info("定时任务结束");
    }
}
java
@Configuration
public class QuartzConfig {
    @Bean("afterPromoJobDetail")
    public JobDetail afterPromoJobDetail() {
        return JobBuilder.newJob(AfterPromoJob.class)
                .withIdentity("afterPromoJobDetail")
                .storeDurably()
                .build();
    }

    @Bean("afterPromoJobTrigger")
    public Trigger afterPromoJobTrigger() {
        CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule("0 33 0 * * ?");
        return TriggerBuilder.newTrigger()
                .forJob(afterPromoJobDetail())
                .withIdentity("afterPromoJobTrigger")
                .withSchedule(cronScheduleBuilder)
                .build();
    }
}

具体参考https://www.cnblogs.com/summerday152/p/14193968.html