下载站用什么网站系统,广元网站建设专业人员,在线网站cms识别,揭阳网站制作 博客主页: 南来_北往
系列专栏#xff1a;Spring Boot实战 前言
最近一周#xff0c;被借调到其他部门#xff0c;赶一个紧急需求#xff0c;需求内容如下#xff1a;
PC网页触发一条设备升级记录#xff08;下图#xff09;#xff0c;后台要定时批量设备更… 博客主页: 南来_北往
系列专栏Spring Boot实战 前言
最近一周被借调到其他部门赶一个紧急需求需求内容如下
PC网页触发一条设备升级记录下图后台要定时批量设备更新。这里定时要用到Quartz批量数据处理要用到SpringBatch二者结合可以完成该需求。
由于之前没有用过SpringBatch于是上网查了下资料发现可参考的不是很多于是只能去慢慢的翻看官方文档。 Spring Batch - Reference Documentation 具体实现
在你的pom.xml文件中添加以下依赖
dependencies!-- Spring Boot --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-batch/artifactId/dependency!-- Quartz --dependencygroupIdorg.quartz-scheduler/groupIdartifactIdquartz/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-quartz/artifactId/dependency
/dependencies在application.properties文件中添加以下配置
spring.quartz.job-store-typememory
spring.quartz.properties.org.quartz.scheduler.instanceNameMyScheduler
spring.quartz.properties.org.quartz.threadPool.threadCount5创建一个实现Job接口的类例如MyBatchJob
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
import org.springframework.batch.core.JobParametersBuilder;
import org.springframework.batch.core.launch.JobLauncher;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.quartz.QuartzJobBean;public class MyBatchJob extends QuartzJobBean {Autowiredprivate JobLauncher jobLauncher;Overrideprotected void executeInternal(JobExecutionContext context) throws JobExecutionException {try {jobLauncher.run(myBatchJob(), new JobParametersBuilder().addString(JobID, String.valueOf(System.currentTimeMillis())).toJobParameters());} catch (Exception e) {throw new JobExecutionException(e);}}private Job myBatchJob() {// 返回你的Spring Batch Job实例}
}在你的配置类中例如ApplicationConfig添加一个SchedulerFactoryBean的Bean用于配置定时任务的触发器
import org.quartz.*;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.scheduling.quartz.SchedulerFactoryBean;Configuration
public class ApplicationConfig {Beanpublic JobDetail myBatchJobDetail() {return JobBuilder.newJob(MyBatchJob.class).withIdentity(myBatchJob).storeDurably().build();}Beanpublic Trigger myBatchJobTrigger() {SimpleScheduleBuilder scheduleBuilder SimpleScheduleBuilder.simpleSchedule().withIntervalInSeconds(60) // 设置任务执行间隔例如每60秒执行一次.repeatForever(); // 设置任务重复执行return TriggerBuilder.newTrigger().forJob(myBatchJobDetail()).withIdentity(myBatchJobTrigger).withSchedule(scheduleBuilder).build();}Beanpublic SchedulerFactoryBean schedulerFactoryBean() {SchedulerFactoryBean schedulerFactoryBean new SchedulerFactoryBean();schedulerFactoryBean.setJobDetails(myBatchJobDetail());schedulerFactoryBean.setTriggers(myBatchJobTrigger());return schedulerFactoryBean;}
}现在你已经成功地整合了Spring Boot、Spring Batch和Quartz实现了定时批量任务。每隔指定的时间间隔例如60秒MyBatchJob将会被执行一次。