Spring Batch CompositeItemProcessor получает значение от других делегатов - PullRequest
0 голосов
/ 27 февраля 2019

У меня составнойItemProcessor, как показано ниже

<bean id="compositeItemProcessor" class="org.springframework.batch.item.support.CompositeItemProcessor">
        <property name="delegates">
            <list>
                <bean class="com.example.itemProcessor1"/>
                <bean class="com.example.itemProcessor2"/>
                <bean class="com.example.itemProcessor3"/>
                <bean class="com.example.itemProcessor4"/>
            </list>
        </property>
    </bean>

У меня проблема в том, что в itemProcessor4 мне требуются значения как itemProcessor1, так и itemProcessor3.

Я рассмотрел использование контекста выполнения шага, но это не работает, так как это происходит в течение одного шага.Я также рассмотрел использование @AfterProcess в ItemProcessor1, но это не работает, так как он не вызывается до ItemProcessor4.

Как правильно распределить данные между делегатами в композитномItemProcessor?

Является ли решение с использованием util: map, который обновляется в itemProcessor1 и считывается в itemProcessor4 при обстоятельствах, когда для параметра commit-interval установлено значение 1?

Ответы [ 2 ]

0 голосов
/ 28 февраля 2019

Использование контекста выполнения шага не будет работать, так как он сохраняется на границе блока, поэтому он не может быть разделен между процессорами в пределах одного блока.

AfterProcess вызывается после зарегистрированного процессора элемента, который является композитным процессором в вашем случае (так после ItemProcessor4).Это также не сработает.

Единственный оставленный вариант - использовать некоторый объект-держатель данных, который вы разделяете между процессорами элементов.

Надеюсь, это поможет.

0 голосов
/ 27 февраля 2019

Эта страница, кажется, утверждает, что существует два типа ExecutionContexts, один на уровне шага, другой на уровне задания.

https://docs.spring.io/spring-batch/trunk/reference/html/patterns.html#passingDataToFutureSteps

Вы должны иметь возможность получить контекст задания и задать для него ключи из контекста шага

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...