Spring Batch Remote Partitioning: рабочие разделы не работают параллельно - PullRequest
0 голосов
/ 30 марта 2020

У меня есть приложение удаленного разбиения Spring Batch, которое генерирует раздел нормально, и разделы работают функционально. Однако в данный момент разделы работают последовательно, а не параллельно. Я выполняю задание / задачи / разделы в потоке данных весеннего облака. Я разделил функциональность мастера и работника на отдельные классы / пакеты, которые имеют отдельные профили. Код класса моего основного профиля (частичный):

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. Когда в весеннем облачном потоке данных работает 2 раздела:

Шаговые разделы Полное выполнение завершенных шаговых разделов

Если я запускаю 2 рабочих, 1 рабочий обрабатывает оба раздела последовательно. Другой работник не обрабатывает разделы.

Я использую scdf для запуска мастера и рабочих в качестве задач:

задач scdf (1 мастер 2 рабочих)

...