Step ExecutionContext не продвигается с помощью Spring Cloud Task в Spring Cloud Data Flow

Я успешно развернул удаленное секционированное задание, используя Spring Cloud Data Flow и Spring Cloud Task; установка основана на Kubernetes, поэтому я добавил в проект Kubernetes-реализацию Spring Cloud Deployer.

Но кажется, что невозможно передать значения из контекста выполнения шага работника в контекст выполнения задания.

Рабочий тасклет записывает некоторые данные в контекст выполнения шага, который успешно сохраняется в таблице «BATCH_STEP_EXECUTION_CONTEXT»:

      @Bean   
public Tasklet workerTasklet() {

        return new Tasklet() {
            @Override
            public RepeatStatus execute(StepContribution contribution, ChunkContext chunkContext) throws Exception {
                ExecutionContext executionContext  = chunkContext.getStepContext()
                           .getStepExecution()
                           .getExecutionContext();
                
                Integer partitionNumber = executionContext.getInt("partitionNumber");
                
                System.out.println("This tasklet ran partition UPD1: " + partitionNumber);

                executionContext.put(RESULT_PREFIX+partitionNumber, "myResult "+partitionNumber);
                
                return RepeatStatus.FINISHED;
            }
        };
    } 

Существует ExecutionPromotionListener , который добавляется в процессе создания шага:

      @Bean
public StepExecutionListener promotionListener() {
        ExecutionContextPromotionListener listener = new
                        ExecutionContextPromotionListener();
        
        listener.setKeys(new String[] {"result0","result1","result2","result3"});
        return listener;
}
@Bean
public Step workerStep() {
    return this.stepBuilderFactory.get("workerStep")
        .tasklet(workerTasklet())
        .listener(promotionListener())
        .build();
}

Задание успешно завершено, работа правильно разделена и выполняется 4 модулями Kubernetes:

Но ожидаемые значения отсутствуют в таблице BATCH_JOB_EXECUTION_CONTEXT.

Конверсли, распространение контекста выполнения шага работает с секционированным заданием в необлачной среде, например, с помощью TaskExecutorPartitionHandler .

0 ответов

Другие вопросы по тегам