栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

SpringBoot 集成 Quartz 实现定时任务功能

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

SpringBoot 集成 Quartz 实现定时任务功能

相关概念

① Job:任务 (要做什么)
② Trigger:触发器 (什么时候做)
③ Scheduler: 任务调度器 (什么时候做什么事情)

功能效果图

具体实现 第一种方式 Job
public class HelloJob {

    public void hello() {
        System.out.println("============== Hello ==============");
    }
}
ScheduleConfig
@Configuration
public class ScheduleConfigOne {

    public MethodInvokingJobDetailFactoryBean methodInvokingJobDetailFactoryBean(Object entity, String method) {
        MethodInvokingJobDetailFactoryBean bean = new MethodInvokingJobDetailFactoryBean();
        bean.setConcurrent(false); //同一Job不允许并发操作
        bean.setTargetObject(entity); //需要执行的实体类对象
        bean.setTargetMethod(method); //需要执行的实体类的方法
        return bean;
    }

    //配置定时任务
    @Bean
    public MethodInvokingJobDetailFactoryBean helloJob() {
        HelloJob helloJob = new HelloJob();
        return methodInvokingJobDetailFactoryBean(helloJob, "hello");
    }

    //配置触发器
    @Bean
    public CronTriggerFactoryBean helloTrigger(JobDetail helloJob) {
        CronTriggerFactoryBean bean = new CronTriggerFactoryBean();
        bean.setJobDetail(helloJob);
        bean.setCronExpression("0 0/1 * * * ?");
        return bean;
    }

    //配置调度器
    @Bean
    public SchedulerFactoryBean schedulerFactory(Trigger helloTrigger) {
        SchedulerFactoryBean bean = new SchedulerFactoryBean();
        bean.setTriggers(helloTrigger);
        return bean;
    }

}
第二种方式 HelloJob
@Component
public class HelloJob extends QuartzJobBean {

    @Override
    protected void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException {
        System.out.println("============== Hello ==============");
    }
}
ScheduleConfig
@Configuration
public class ScheduleConfig {

    @Bean
    public MethodInvokingJobDetailFactoryBean methodInvokingJobDetailFactoryBean() {
        MethodInvokingJobDetailFactoryBean bean = new MethodInvokingJobDetailFactoryBean();
        bean.setConcurrent(false); //同一job不允许并发运行
        return bean;
    }

    @Bean
    public JobDetail jobDetail(){
        return JobBuilder.newJob(HelloJob.class)
                .withIdentity("HelloJob")
                .storeDurably()
                .build();
    }

    @Bean
    public Trigger trigger(){
        // 每5秒执行一次
        CronScheduleBuilder cronScheduleBuilder = CronScheduleBuilder.cronSchedule("0/5 * * * * ? ");
        return TriggerBuilder.newTrigger()
                .forJob(jobDetail())
                .withIdentity("HelloTrigger")
                .withSchedule(cronScheduleBuilder)
                .build();
    }

}
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1014830.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号