如何在不影响Spring Cloud Data Flow上部署的其他作业的情况下修改作业

时间:2019-10-25 12:43:33

标签: spring-batch spring-cloud-dataflow

如何在SCDF上修改和部署1个作业(例如,通过更改作业A重建jar文件),但该jar文件中的其他作业仍在运行。

我要在Spring Cloud Data Flow上设置Spring Batch作业。我的Spring Batch项目中有多个作业(A,B,C等)。我已经从项目中构建了一个jar文件,并将其部署在SCDF上。 我在启动任务以分别运行每个作业时使用了--spring.batch.job.names = A / B / C /...。 我尝试创建一个新的jar并将其替换为旧的jar,但是由于旧的jar仍在运行,因此无法正常工作。

我有多个与多个工作相关的类,并且从CommonBatchConfiguration扩展而来:

@Configuration
public class jobAclass extends CommonBatchConfiguration{
    @Bean
        public Job jobA() {
                return jobBuilderFactory
            .get("jobA ")
            .incrementer(new RunIdIncrementer())
            .start(stepA1())
                .build();
        }
    @Bean
    public Step stepA1() {  
        return stepBuilderFactory
                .get("stepA1")
                .tasklet(taskletA1())
                .build();
    }

    public Tasklet taskletA1() {
        return (contribution, chunkContext) -> {
            return RepeatStatus.FINISHED;
        };
    }
}

@Configuration
public class jobBclass extends CommonBatchConfiguration{
    @Bean
        public Job jobB() {
                return jobBuilderFactory
            .get("jobB")
            .incrementer(new RunIdIncrementer())
            .start(stepB1())
                .build();
        }
    @Bean
    public Step stepB1() {  
        return stepBuilderFactory
                .get("stepB1")
                .tasklet(taskletB1())
                .build();
    }   
    public Tasklet taskletB1() {
        return (contribution, chunkContext) -> {
            return RepeatStatus.FINISHED;
        };
    }
}

@EnableBatchProcessing
@Configuration
public class CommonBatchConfiguration {
    @Autowired
    public JobBuilderFactory jobBuilderFactory;
    @Autowired
    public StepBuilderFactory stepBuilderFactory;
}

我希望在文件jar中修改1个作业并部署它,而不会影响其他作业

1 个答案:

答案 0 :(得分:0)

在您的情况下,您似乎需要组合任务(配置为批处理作业),并且可以将组合任务部署为单个任务(批处理应用程序)。有关组合任务的更多详细信息,请参见here

SCDF 2.3.x中已解决了修改一个作业版本而不影响其他任务的功能,您可以观看史诗般的here