Java Spring启动作业调度器
我试图在Spring Boot批处理中定义多个作业。 我可以很容易地安排工作,但是当我需要的时候就会遇到问题 只安排一些特定的工作。 这是我的方法,定义调度类,我在其中调度作业。 我可以调度特定作业而不是将所有作业一起调度吗?? 谢谢Java Spring启动作业调度器,java,spring,spring-boot,Java,Spring,Spring Boot,我试图在Spring Boot批处理中定义多个作业。 我可以很容易地安排工作,但是当我需要的时候就会遇到问题 只安排一些特定的工作。 这是我的方法,定义调度类,我在其中调度作业。 我可以调度特定作业而不是将所有作业一起调度吗?? 谢谢 import org.apache.log4j.Logger; 导入org.springframework.batch.core.Job; 导入org.springframework.batch.core.JobExecution; 导入org.springfr
import org.apache.log4j.Logger;
导入org.springframework.batch.core.Job;
导入org.springframework.batch.core.JobExecution;
导入org.springframework.batch.core.JobParameters;
导入org.springframework.batch.core.JobParametersBuilder;
导入org.springframework.batch.core.JobParametersInvalidException;
导入org.springframework.batch.core.launch.JobLauncher;
导入org.springframework.batch.core.repository.jobExecutionReadyRunningException;
导入org.springframework.batch.core.repository.JobInstanceAlreadyCompleteException;
导入org.springframework.batch.core.repository.JobRestartException;
导入org.springframework.beans.factory.annotation.Autowired;
导入org.springframework.scheduling.annotation.EnableScheduling;
导入org.springframework.scheduling.annotation.Scheduled;
导入org.springframework.stereotype.Component;
@组成部分
@使能调度
公共类作业调度器{
静态记录器=Logger.getLogger(JobScheduler.class);
@自动连线
JobLauncher JobLauncher;
@自动连线
私人工作;
@已计划(cron=“10*****”)//以10秒的间隔计划作业
public void scheduleJob(){
JobParameters JobParameters=new JobParameters Builder().addLong(“时间”,System.currentTimeMillis()).toJobParameters();
试一试{
字符串jobName=job.getName();
logger.info(“作业名称==>”+作业名称);
JobExecution JobExecution=jobLauncher.run(作业,作业参数);
info(“作业状态==>”+jobsecution.getStatus());
}捕获(JobExecutionalReadyRunning异常e){
}捕获(JobRestartException e){
}捕获(JobInstancealReadyComplete异常){
}catch(作业参数sinvalidexception e){
}
}
}
是的,你可以这样做。制作一个单独的方法/类,并使用开关盒(使用java)实现它。每个作业都有单独的方法调用(我假设您希望安排不同的作业)。示例代码如下所示-
switch(job) {
case 'job1' {
executejob1(job1, jobParameters);
break;
}
case 'job2' {
executejob1(job2, jobParameters);
break;
}
case 'job3' {
executejob1(job3, jobParameters);
break;
}
case 'job4' {
executejob1(job4, jobParameters);
break;
}
}
现在,您只需要使用“job”调用它,您希望将其与其job参数一起调度。希望这会有所帮助。是的,你可以做到。制作一个单独的方法/类,并使用开关盒(使用java)实现它。每个作业都有单独的方法调用(我假设您希望安排不同的作业)。示例代码如下所示-
switch(job) {
case 'job1' {
executejob1(job1, jobParameters);
break;
}
case 'job2' {
executejob1(job2, jobParameters);
break;
}
case 'job3' {
executejob1(job3, jobParameters);
break;
}
case 'job4' {
executejob1(job4, jobParameters);
break;
}
}
现在,您只需要使用“job”调用它,您希望将其与其job参数一起调度。希望这会有所帮助。看看这个简单的例子:
您所需要做的就是使用@SpringBootApplication启用调度
@启用计划注释
然后,您可以在任何要创建计划任务的@Component中使用@Scheduled annotation for specific方法,并为每个任务设置不同的计划时间。
你要多少就多少
您不需要创建JobScheduler、JobLitter或Job。看看这个简单的示例:
您所需要做的就是使用@SpringBootApplication启用调度
@启用计划注释
然后,您可以在任何要创建计划任务的@Component中使用@Scheduled annotation for specific方法,并为每个任务设置不同的计划时间。
你要多少就多少
您不需要创建JobScheduler、JobLiunter或Job。谢谢您的回复。你建议的方式很好,我可以在这里限制工作。但是我仍然很困惑,我可以为每项工作设定不同的时间表。是的。你可以。不要使用单一的Cron表达式,只需使用不同的Cron并在作业参数中传递它们即可。感谢您的回复。你建议的方式很好,我可以在这里限制工作。但是我仍然很困惑,我可以为每项工作设定不同的时间表。是的。你可以。不要使用单一的Cron表达式,只需使用不同的Cron并在作业参数中传递它们。感谢Bartek的回复。让我看一下链接。谢谢Bartek的回复。让我看一下链接。