首页 > 解决方案 > Spring Batch Remote Partitioning:工作分区不并行运行

问题描述

我有一个 Spring Batch 远程分区应用程序,它正在生成分区,并且分区功能正常。但是,目前分区是按顺序运行的,而不是并行运行的。我在 Spring Cloud 数据流中运行作业/任务/分区。我已将我的 master 和 worker 功能拆分为具有单独配置文件的单独类/包。我的主档案类代码(部分)是:

public class PartitionMaster {
....
// Configure Remote Job
    @Bean
    public Job jobRemotePartitioning() {
        return this.jobBuilderFactory
                .get("jobRemotePartitioning")
                .incrementer(new RunIdIncrementer())
                .flow(paymentRaiseMasterStep())
                .end()
                .build();
    }
....
   @Bean
    public Step paymentRaiseMasterStep() {
        CustomPartitioner customPartitioner = new CustomPartitioner(datasource, propertiesConfig.getTimeTravelDate(), propertiesConfig.getLeadTime());
        return this.masterStepBuilderFactory
                .get("paymentRaiseMasterStep")
                .partitioner("paymentRaiseWorkerStep", customPartitioner)
                .gridSize(propertiesConfig.getGrid())
                .outputChannel(masterPaymentRaiseRequests())
                .taskExecutor(taskExecutor())
                .build();
    }
....
    @Bean
    public TaskExecutor taskExecutor(){
        return new SimpleAsyncTaskExecutor("paymentRaiseWorkerStep");
    }
....
}

我的工人资料类代码(部分)是:

public class PartitionWorker {
....
    @Bean
    public Step paymentRaiseWorkerStep() {
        return this.workerStepBuilderFactory
                .get("paymentRaiseWorkerStep")
                .inputChannel(consumePaymentRaiseMasterRequests())
                .tasklet(taskletProcessing(null, null))
                .build();
    }
....
}

任何专家的 Spring Batch 远程分区建议将不胜感激。当我在 Spring Cloud 数据流中运行 2 个分区时:

步骤分区 完整作业已完成的步骤分区

如果我运行 2 个工作人员,则 1 个工作人员按顺序处理两个分区。另一个工作人员不处理任何分区。

我正在使用 scdf 将 master 和 worker 作为任务运行:

scdf 任务(1 个主 2 个工人)

标签: parallel-processingspring-batchbatch-processingspring-cloud-task

解决方案


推荐阅读