Springboot Quartz 整合

本文展示了如何在SpringBoot项目中集成Quartz定时器,创建两个测试任务类TestTask01和TestTask02,分别设置不同的执行间隔。通过QuartzConfig配置类定义了任务调度,实现了每两秒执行一次的任务。代码运行效果显示任务按预期周期性执行。
摘要由CSDN通过智能技术生成

在springboot框架中使用quartz定时器。
只是测试quartz代码,没有实际操作数据库

导入依赖
	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.3.0.RELEASE</version>
	</parent>

	<dependencies>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter</artifactId>
		</dependency>
		
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>
		
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-quartz</artifactId>
		</dependency>
	</dependencies>
</project>

有两个测试类,分别设置不同的调用时间

测试类
public class TestTask01 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()));
	}
}
public class TestTask02 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()));
	}

}
  • 定时操作sql
import java.util.List;

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

import testmaven06calculation.com.cal.res.pojo.CalData;
import testmaven06calculation.com.cal.res.service.CalDataService;
import testmaven06calculation.com.cal.res.util.AjaxMessage;

public class CalDataQuartz extends QuartzJobBean{
	
	@Autowired
	private CalDataService calDataService;

	@Override
	protected void executeInternal(JobExecutionContext context) throws JobExecutionException {
		List<CalData> calDataList = calDataService.queryAllCalData();
		// 计算所有公式
		for (CalData calData : calDataList) {
			try {
				AjaxMessage ajax = calDataService.calculateData(calData.getFormula());
				System.out.println("公式:"+calData.getFormula()+" "+ajax.getMessage()+" "+ajax.getResult());
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
}
quartz配置类
import org.quartz.CronScheduleBuilder;
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;

@Configuration
public class QuartzConfig {
	
	@Bean
	public JobDetail testQuartz01() {
		return JobBuilder.newJob(TestTask01.class).withIdentity("testTask01").storeDurably().build();
	}
	
	@Bean
	public Trigger testQuartzTrigger01() {
		// 5秒执行一次
		SimpleScheduleBuilder scheduleBuilder = SimpleScheduleBuilder.simpleSchedule()
				.withIntervalInSeconds(2)
				.repeatForever();
		return TriggerBuilder.newTrigger().forJob(testQuartz01())
				.withIdentity("testTask01")
				.withSchedule(scheduleBuilder)
				.build();
	}
	
	@Bean
	public JobDetail testQuartz02() {
		return JobBuilder.newJob(TestTask02.class).withIdentity("testTask02").storeDurably().build();
	}
	
	@Bean
	public Trigger testQuartzTrigger02() {
		// cron方式,5秒执行一次
		return TriggerBuilder.newTrigger().forJob(testQuartz02())
				.withIdentity("testTask02")
				.withSchedule(CronScheduleBuilder.cronSchedule("*/2 * * * * ?"))
				.build();
	}
}

定时器效果
TestQuartz01----->2021-01-11 13:34:37
TestQuartz02----->2021-01-11 13:34:38
TestQuartz01----->2021-01-11 13:34:39
TestQuartz02----->2021-01-11 13:34:40
TestQuartz01----->2021-01-11 13:34:41
TestQuartz02----->2021-01-11 13:34:42
TestQuartz01----->2021-01-11 13:34:43
TestQuartz02----->2021-01-11 13:34:44
TestQuartz01----->2021-01-11 13:34:45
TestQuartz02----->2021-01-11 13:34:46
TestQuartz01----->2021-01-11 13:34:47
TestQuartz02----->2021-01-11 13:34:48
TestQuartz01----->2021-01-11 13:34:49
TestQuartz02----->2021-01-11 13:34:50
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值