zoukankan      html  css  js  c++  java
  • Spring Boot笔记(三) springboot 集成 Quartz 定时任务

     个人博客网:https://wushaopei.github.io/    (你想要这里多有)

    1、 在 pom.xml 中 添加 Quartz 所需要 的 依赖

                    <!--定时器 quartz-->
    		<dependency>
    			<groupId>org.springframework.boot</groupId>
    			<artifactId>spring-boot-starter-quartz</artifactId>
    		</dependency>
    		<dependency>
    			<groupId>org.quartz-scheduler</groupId>
    			<artifactId>quartz</artifactId>
    			<version>2.3.0</version>
    		</dependency>

    注意:

    quartz 只能基于 springboot 的 parent 2.0 以上 版本 才能使用过,低于2.0 的版本无法加载到 quartz 的pom依赖包

    2、创建要执行的任务类:

     TestTask1  与  TestTask2

    package com.example.poiutis.quartzHandler;
    
    import org.quartz.JobExecutionContext;
    import org.quartz.JobExecutionException;
    import org.springframework.scheduling.quartz.QuartzJobBean;
    
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    /**
     * @ClassName TestTask1
     * @Description TODO
     * @Author wushaopei
     * @Date 2019/7/26 12:28
     * @Version 1.0
     */
    public class TestTask1 extends QuartzJobBean {
    
        @Override
        protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
            SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            System.out.println("TestQuartz01----" + sdf.format(new Date()));
        }
    }
    
    package com.example.poiutis.quartzHandler;
    
    import org.quartz.JobExecutionContext;
    import org.quartz.JobExecutionException;
    import org.springframework.scheduling.quartz.QuartzJobBean;
    
    import java.text.SimpleDateFormat;
    import java.util.Date;
    
    /**
     * @ClassName TestTask2
     * @Description TODO
     * @Author wushaopei
     * @Date 2019/7/26 12:28
     * @Version 1.0
     */
    public class TestTask2 extends QuartzJobBean {
        @Override
        protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
            SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
            System.out.println("TestQuartz02----" + sdf.format(new Date()));
        }
    }
    

    3、定时器(执行类):

    package com.example.poiutis.quartzHandler;
    
    import org.quartz.*;
    import org.slf4j.Logger;
    import org.slf4j.LoggerFactory;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    
    /**
     * @ClassName QuartzConfig
     * @Description TODO
     * @Author wushaopei
     * @Date 2019/7/26 12:28
     * @Version 1.0
     */
    @Configuration
    public class QuartzConfig {
        private static Logger logger = LoggerFactory.getLogger(QuartzConfig.class);
    
    //    testTask1使用的固定间隔方式,testTask2使用的是cron表达式方式。
    
        @Bean
        public JobDetail testQuartz1() {
            return JobBuilder.newJob(TestTask1.class).withIdentity("testTask1").storeDurably().build();
        }
    
        @Bean
        public Trigger testQuartzTrigger1() {
            //5秒执行一次
            SimpleScheduleBuilder scheduleBuilder = SimpleScheduleBuilder.simpleSchedule()
                    .withIntervalInSeconds(5)
                    .repeatForever();
            logger.info(System.currentTimeMillis()+"");
            return TriggerBuilder.newTrigger().forJob(testQuartz1())
                    .withIdentity("testTask1")
                    .withSchedule(scheduleBuilder)
                    .build();
        }
    
        @Bean
        public JobDetail testQuartz2() {
            return JobBuilder.newJob(TestTask2.class).withIdentity("testTask2").storeDurably().build();
        }
    
        @Bean
        public Trigger testQuartzTrigger2() {
            //cron方式,每隔5秒执行一次
            logger.info(System.currentTimeMillis()+"");
            return TriggerBuilder.newTrigger().forJob(testQuartz2())
                    .withIdentity("testTask2")
                    .withSchedule(CronScheduleBuilder.cronSchedule("*/5 * * * * ?"))
                    .build();
        }
    
    
    }
    

    执行结果:


  • 相关阅读:
    【Go语言】I/O专题
    【Go语言】集合与文件操作
    【Go语言】LiteIDE使用的个人使用方法
    【Go语言】错误与异常处理机制
    【Go语言】面向对象扩展——接口
    【Go语言】学习资料
    创建型模式(前引)简单工厂模式Simple Factory
    redis demo
    导出CSV格式
    mongo聚合命令
  • 原文地址:https://www.cnblogs.com/wushaopei/p/11979379.html
Copyright © 2011-2022 走看看