springBoot 整合Quartz 定时两个任务

本文介绍了如何在SpringBoot中结合Quartz来定时执行两个不同的任务。通过定义两个Job并配置定时规则,实现了启动SpringBoot应用后自动执行的任务调度。运行结果显示定时任务成功执行。
摘要由CSDN通过智能技术生成

这两天在做一个定时任务,下面是一个简单的结构:首先有两个不同的任务,然后根据任务进行定时的配置
代码如下:
定义两个Job

package com.example.demo.schedule;

import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.quartz.QuartzJobBean;

public class JobOne extends QuartzJobBean {
    private static final Logger logger= LoggerFactory.getLogger(JobOne.class);
    @Autowired
    JobService jobService;
    
    @Override
    protected void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException {
        logger.info("this is job 1");
    }
}
package com.example.demo.schedule;

import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.quartz.QuartzJobBean;

public class JobTwo extends QuartzJobBean {
    private static final Logger logger= LoggerFactory.getLogger(JobTwo.class);
    @Autowired
    JobService jobService;

    @Override
    protected void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException {
        logger.info("this is job 2");
    }
}

然后给这两个job进行配置

package com.example.demo.schedule;

import org.quartz.JobBuilder;
import org.quartz.JobDetail;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import java.text.SimpleDateFormat;
import java.util.Date;

import static org.quartz.SimpleScheduleBuilder.simpleSchedule;

@Configuration
public class QuartzConfig {
    @Bean
    public JobDetail jobOne(){
        return JobBuilder.newJob(JobOne.class)
                .withIdentity("job 1")
                .storeDurably()
                .build();
    }

    @Bean
    public Trigger jobOneTask(){
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date date = new Date();
        try {
            date = sdf.parse("2020-01-01 00:00:00");
        }catch (Exception e){
            e.printStackTrace();
        }
        return TriggerBuilder.newTrigger().forJob(jobOne())
                .withIdentity("jobOneTask")
                .startAt(date) // 设置任务的开始时间
                .withSchedule(simpleSchedule()
                        .withIntervalInSeconds(20) // 设置重复的间隔
                        .repeatForever()) // 设置重复的次数,默认是0,即执行一次就不再重复
                .build();
    }

    @Bean
    public JobDetail jobTwo(){
        return JobBuilder.newJob(JobTwo.class)
                .withIdentity("job 2")
                .storeDurably()
                .build();
    }

    @Bean
    public Trigger jobTwoTask(){
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
        Date date = new Date();
        try {
            date = sdf.parse("2020-01-01 00:00:10"); 
        }catch (Exception e){
            e.printStackTrace();
        }
        return TriggerBuilder.newTrigger().forJob(jobTwo())
                .withIdentity("jobTwoTask")
                .startAt(date) // 设置任务的开始时间
                .withSchedule(simpleSchedule()
                        .withIntervalInSeconds(20) // 设置重复的间隔
                        .repeatForever()) // 设置重复的次数,默认是0,即执行一次就不再重复
                .build();
    }
}

这样就可以了,启动springBoot即可
下面是运行的结果

2020-04-09 14:44:34,267 -1 Starting Quartz Scheduler now
2020-04-09 14:44:34,268 -1 Scheduler quartzScheduler_$_NON_CLUSTERED started.
2020-04-09 14:44:34,272 -1 Starting ProtocolHandler ["http-nio-8080"]
2020-04-09 14:44:34,289 -1 Tomcat started on port(s): 8080 (http) with context path ''
2020-04-09 14:44:34,291 -1 Started DemoApplication in 2.016 seconds (JVM running for 3.191)
2020-04-09 14:45:00,005 -1 this is job 1
2020-04-09 14:45:10,000 -1 this is job 2
2020-04-09 14:45:20,000 -1 this is job 1
2020-04-09 14:45:30,001 -1 this is job 2
2020-04-09 14:45:40,000 -1 this is job 1
2020-04-09 14:45:50,000 -1 this is job 2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值