Spring batch 如何在不影响Spring云数据流上部署的其他作业的情况下修改作业

Spring batch 如何在不影响Spring云数据流上部署的其他作业的情况下修改作业,spring-batch,spring-cloud-dataflow,Spring Batch,Spring Cloud Dataflow,如何在SCDF上修改和部署1个作业(例如:通过更改作业A重建jar文件),但该jar文件中的其他作业仍在运行 我正在Spring云数据流上设置Spring批处理作业。在我的Spring批处理项目中有多个作业(A、B、C……)。我已经从我的项目中构建了一个jar文件,并将其部署在SCDF上。 在启动任务时,我使用--spring.batch.job.names=A/B/C/…分别运行每个作业。 我尝试过创建一个新的jar并用旧的jar替换它,但是它不起作用,因为旧的jar仍然在运行 我有多个与多个

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

我正在Spring云数据流上设置Spring批处理作业。在我的Spring批处理项目中有多个作业(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个作业并部署它而不影响其他作业。在您的情况下,似乎需要组合任务(配置为批处理作业),并且可以将组合任务部署为单个任务(批处理应用程序)。有关组合任务的更多详细信息,请参见


修改一个作业的版本而不影响其他任务的特性在SCDF的2.3.x中得到了解决,您可以观看epic

我修改了一个作业并获得了一个新的jar文件。之后,我将其复制到app_注册url指向的deploy文件夹中。它可以工作。但是,我遇到了一个新问题,即当我使用SCDF dashbroad“停止作业”时,任务不会停止,并且该作业的状态为“停止”。特别是,该“停止”作业的日志仍在编写中。你对此有什么想法吗?可能是一个bug或者与你的作业配置有关的东西。您能否在SpringCloudDataFlowGitHub上创建一个问题,并提供有用的信息来重现这个问题?我已经找到了问题的原因。日志仍被写入,因为作业一直执行到完成当前步骤(我的作业有2个步骤,第二个步骤未执行)。但是,当我停止作业时,是否有任何方法可以立即关闭它(步骤1)?我将按照您的建议尝试在Github上创建问题。