Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/305.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/spring/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Spring启动作业调度器_Java_Spring_Spring Boot - Fatal编程技术网

Java Spring启动作业调度器

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

我试图在Spring Boot批处理中定义多个作业。 我可以很容易地安排工作,但是当我需要的时候就会遇到问题 只安排一些特定的工作。 这是我的方法,定义调度类,我在其中调度作业。 我可以调度特定作业而不是将所有作业一起调度吗?? 谢谢

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的回复。让我看一下链接。