Java 如何创建主作业来处理多个spring批处理作业?

Java 如何创建主作业来处理多个spring批处理作业?,java,spring,spring-batch,Java,Spring,Spring Batch,我们有多个spring批处理作业。但每个作业都需要单独启动 有没有办法在spring中创建一个主作业或任何负责执行所有其他批处理作业的控制器?因此,我们只需要执行主作业,其他所有作业都会自动启动。我刚才解释了如何在单独的上下文中加载所有作业的情况下启动spring应用程序。我们有重新启动作业,每10分钟计划一次,它会检查最新的失败执行,并尝试再重新启动几次 您的用例基本相同,您可以使用自己的配置文件在不同的上下文中定义所有作业,在配置中,您可以通过设置spring.batch.job.enabl

我们有多个
spring批处理作业
。但每个作业都需要单独启动

有没有办法在spring中创建一个
主作业
任何负责执行所有其他批处理作业的控制器
?因此,我们只需要执行主作业,其他所有作业都会自动启动。

我刚才解释了如何在单独的上下文中加载所有作业的情况下启动spring应用程序。我们有重新启动作业,每10分钟计划一次,它会检查最新的失败执行,并尝试再重新启动几次

您的用例基本相同,您可以使用自己的配置文件在不同的上下文中定义所有作业,在配置中,您可以通过设置
spring.batch.job.enabled:false告诉spring batch不要在启动时运行它们,您可以编写自己的启动器,它使用
JobExplorer
为您启动作业,您可以安排它或其他操作

比如:

@Component
@EnableScheduling
public class AllJobLauncher {

    @Autowired
    JobExplorer jobExplorer;

    @Autowired
    private JobLauncher jobLauncher;
    @Autowired
    private JobRegistry jobRegistry;

    @Scheduled(cron = "${some.cron:0 0/10 * * * ?}")
    public void launchAllJobs() throws JobExecutionException {
        final List<String> jobNames = jobExplorer.getJobNames();

        for (final String jobName : jobNames) {
             final Job job = jobRegistry.getJob(getJobName(organizationId));
             final JobParameters jobParameters = new JobParametersBuilder() //build parameters

             jobLauncher.run(job, jobParameters);
         }
    }

感谢您的解释,还有一点,我们能为多个作业提供通用的JobLauncher和JobRepository吗?如果您正在查看我在其他问题上发布的配置,我在这里发布的
JobLauncher
代码的这部分在
JobContextConfig
类中,因此,我们只使用了
JobRepository
JobLauncher
@Bean
public JobLauncher jobLauncher() {
    final SimpleJobLauncher jobLauncher = new SimpleJobLauncher();
    jobLauncher.setJobRepository(jobRepository);
    final SimpleAsyncTaskExecutor simpleAsyncTaskExecutor = new SimpleAsyncTaskExecutor();
    jobLauncher.setTaskExecutor(simpleAsyncTaskExecutor);
    return jobLauncher;
 }