如何在Spring数据流服务器上将一个包含10个Spring批处理作业的应用程序分割成10个任务?

问题描述 投票:0回答:1

我有一个Spring引导批处理作业的应用程序,其中有大约10个作业(数量可能会根据需求增加)。我一直在尝试使用Spring云数据流服务器和本地服务器设置来启动和监控这些作业。

但我面临的问题是,在SCDF中注册应用后,我为注册的应用创建了任务,而单个任务本身就会从应用中启动所有10个作业。虽然我可以看到在单个任务执行中为每个作业创建了单独的job-id,但我想知道是否可以为单个jar中的每个作业创建单独的任务。如果可以,如何实现?

我需要这个功能,因为很少有作业的执行依赖于之前运行的作业的执行状态。下面是我的作业类配置的片段。而我的几个作业会在不同的时间间隔运行。因此,即使是使用cloud foundry或kubernates来调度作业,我也只能在任务级别上进行调度,其中所有作业都会应用相同的调度时间间隔。我可能无法在任务里面为每个作业应用不同的调度。我不清楚云代工和kubernates的调度部分,但我想应该是这样的。

    //Job Config
    @Configuration
    @EnableBatchProcessing
    @EnableTask
    public class Job1Loader {
    @Bean
        public Job loadJob1()
        {
            return jobBuilderFactory().get("JOb1Loader")
                .incrementer(new RunIdIncrementer())
                .flow(job01_step01())
                .end()
                .build();;//return job
    }

//Job Config
    @Configuration
    @EnableBatchProcessing
    @EnableTask
    public class Job2Loader {
    @Bean
        public Job loadJob2()
        {
            return jobBuilderFactory().get("JOb2Loader")
                .incrementer(new RunIdIncrementer())
                .flow(job02_step01())
                .end()
                .build();;//return job
    }

Same goes for other 8 jobs.

谢谢。

java spring-boot spring-batch spring-cloud-dataflow
1个回答
1
投票

我想知道是否可以为单个jar中可用的每个作业设置单独的任务。如果可以,我怎么实现呢?

尽管我不建议将所有作业打包在一个单一的jar中,但没有什么能阻止你使用SCDF的这种方法。你可以为每个作业创建一个任务定义,并为每个任务配置一个属性来运行特定的作业,例如。

--spring.batch.job.names=job1
© www.soinside.com 2019 - 2024. All rights reserved.