Прослушивание последующей записи задания, выполняемого внутри шага

#spring-batch

#spring-batch

Вопрос:

Это моя конфигурация step:

 @Bean
Step processEnrollment(@Lazy Job enrollmentProcessor) {
    return this.steps.get("processEnrollment")
        .job(enrollmentProcessor)
        .launcher(this.jobLauncher)
        .parametersExtractor(DEFAULT_PARAM_EXTRACTOR)
        .listener(/*StepExecutionListener*/)
        .build();
}
  

Моя проблема в том, что .listener() принимает только прослушиватели выполнения шага. Есть ли какой-либо способ зарегистрировать прослушиватели writer, например? Я не хочу связывать «внутреннее» задание с этим прослушивателем.

Комментарии:

1. Где ваш автор в приведенном выше коде? Является ли этот writer частью Job enrollmentProcessor ?

2. Программа записи является частью enrollmentProcessor, и я хочу прослушать ее снаружи, но StepBuilderHelper.listener() принимает только прослушиватели выполнения шага.

Ответ №1:

Если вы переносите полное задание в шаг, вы не сможете зарегистрировать фрагмент, прослушиватель чтения или записи.

Шаг просто завершает задание и понятия не имеет, что происходит внутри задания. Он просто знает, когда оно начинается и когда заканчивается; прослушиватели не распространяются на дочерние элементы. По этой же причине вы не можете зарегистрировать прослушиватель фрагмента, чтения или записи в задании.

Если вы хотите зарегистрировать прослушиватель записи, вы должны сделать это на соответствующем шаге (ах) вашего задания enrollmentProcessor.