前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Spring Boot(十七): 集成 Quartz

Spring Boot(十七): 集成 Quartz

作者头像
低调小熊猫
发布2020-06-07 10:48:48
5460
发布2020-06-07 10:48:48
举报
文章被收录于专栏:低调小熊猫低调小熊猫

Spring Boot(十七): 集成 Quartz

以前我写过spring自带的定时任务SpringBoot(十):定时任务 https://aodeng.cc/archives/springbootshi

很方便也很简单,掌握cron表达式就行,cron 说明

cron 一共有七位,最后一位是年,Spring Boot 定时方案中只需要设置六位即可:

第一位,表示秒,取值 0 ~ 59 第二位,表示分,取值 0 ~ 59 第三位,表示小时,取值 0 ~ 23 第四位,日期天/日,取值 1 ~ 31 第五位,日期月份,取值 1~12 第六位,星期,取值 1 ~ 7,星期一,星期二...,注,不是第 1 周、第 2 周的意思,另外,1 表示星期天,2 表示星期一 第七位,年份,可以留空,取值 1970 ~ 2099

简单介绍一下Quartz

Job 为作业的接口,为任务调度的对象;JobDetail 用来描述 Job 的实现类及其他相关的静态信息;Trigger 做为作业的定时管理工具,一个 Trigger 只能对应一个作业实例,而一个作业实例可对应多个触发器;Scheduler 做为定时任务容器,是 Quartz 最上层的东西,它提携了所有触发器和作业,使它们协调工作,每个 Scheduler 都存有 JobDetail 和 Trigger 的注册,一个 Scheduler 中可以注册多个 JobDetail 和多个 Trigger。

使用: 我们创建两个job TestJob

代码语言:javascript
复制
/** * @program:hope * @ClassName:TestJob * @author:aodeng * @blog:低调小熊猫(https://aodeng.cc) * @create:2019-02-26 10:17 * @Description: TODO * @Version 1.0 **/public class TestJob implements Job {    @Override    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {        System.out.println("TestJob running ...");    }}

TestJob2

代码语言:javascript
复制
/** * @program:hope * @ClassName:TestJob2 * @author:aodeng * @blog:低调小熊猫(https://aodeng.cc) * @create:2019-02-26 10:18 * @Description: TODO * @Version 1.0 **/public class TestJob2 implements Job {    @Override    public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {        System.out.println("TestJob2 running ...");    }}

创建CronScheduleJob

代码语言:javascript
复制
/** * @program:hope * @ClassName:CronScheduleJob * @author:aodeng * @blog:低调小熊猫(https://aodeng.cc) * @create:2019-02-26 10:21 * @Description: TODO * @Version 1.0 **/@Componentpublic class CronScheduleJob {
    @Autowired    private SchedulerFactoryBean schedulerFactoryBean;
    /**     * @Description: 启动两个定时任务    * @Param: []    * @return: []    * @Author: aodeng    * @Date: 19-2-26    */     public void scheduleJobs() throws SchedulerException{        Scheduler scheduler=schedulerFactoryBean.getScheduler();        schedulejobs(scheduler);        schedulejobs2(scheduler);
    }    private void schedulejobs(Scheduler scheduler) throws SchedulerException{        JobDetail jobDetail = JobBuilder.newJob(TestJob.class).withIdentity("job","group").build();        //间隔 6 秒        CronScheduleBuilder scheduleBuilder=CronScheduleBuilder.cronSchedule("0/6 * * * * ?");        CronTrigger cronTrigger=TriggerBuilder.newTrigger().withIdentity("trigger","group").withSchedule(scheduleBuilder).build();        scheduler.scheduleJob(jobDetail,cronTrigger);    }    private void schedulejobs2(Scheduler scheduler) throws SchedulerException{        JobDetail jobDetail = JobBuilder.newJob(TestJob2.class).withIdentity("job2","group2").build();        //间隔 12 秒        CronScheduleBuilder scheduleBuilder=CronScheduleBuilder.cronSchedule("0/12 * * * * ?");        CronTrigger cronTrigger=TriggerBuilder.newTrigger().withIdentity("trigger2","group2").withSchedule(scheduleBuilder).build();        scheduler.scheduleJob(jobDetail,cronTrigger);    }}

启动

代码语言:javascript
复制
/** * @program:hope * @ClassName:MyStartupRunner * @author:aodeng * @blog:低调小熊猫(https://aodeng.cc) * @create:2019-02-26 10:38 * @Description: 启动时触发定时任务 * @Version 1.0 **/@Componentpublic class MyStartupRunner implements CommandLineRunner{    /** logger */    private static final Logger LOGGER = LoggerFactory.getLogger(MyStartupRunner.class);
    @Autowired    private CronScheduleJob cronScheduleJob;
    @Override    public void run(String... args) throws Exception {        cronScheduleJob.scheduleJobs();        LOGGER.info(">>>>>>>>>>>>>>>定时任务开始执行<<<<<<<<<<<<<");    }}

源码地址

https://github.com/java-aodeng/hope

  • 本文作者: 低调小熊猫
  • 本文链接: https://aodeng.cc/archives/1551317977552
  • 版权声明: 本博客所有文章除特别声明外,均采用CC BY-NC-SA 3.0 许可协议。转载请注明出处!
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-02-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 低调小熊猫 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Spring Boot(十七): 集成 Quartz
    • 简单介绍一下Quartz
    • 源码地址
    相关产品与服务
    容器服务
    腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档