Весенняя партия, как я могу заставить остановить работу - PullRequest
0 голосов
/ 15 марта 2019

Я хочу остановить работу, если процессор вернул ноль Examaple:

BatchStatus.failed

Ответы [ 2 ]

0 голосов
/ 15 марта 2019

Я бы предложил не выдавать исключение NullPinterException из ItemProcessListener, чтобы остановить работу.Лучше всего было бы сделать так, чтобы пружинная партия автоматически сделала для вас.Скажем, если ваш ItemReader прочитал все данные, тогда верните null из readReader вашего ItemReader.Если ItemProcessor не получает ничего для обработки, вернуть null из процесса вашего ItemProcessor ().Поскольку ItemWriter вызывается с нулем, вам нечего будет писать.Следовательно, весенняя партия будет понимать, что все записи читаются, обрабатываются и записываются.Следовательно, работа будет остановлена.

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

0 голосов
/ 15 марта 2019

Чтобы обнаружить, что обработчик элемента возвратил для элемента значение null, вы можете использовать org.springframework.batch.core.ItemProcessListener#afterProcess(Object item, Object result).Параметр result является результатом обработки и может быть нулевым, если процессор вернул нулевое значение.

Теперь, если вы хотите завершить работу, когда процессор возвращает нулевое значение, вы можете вызвать исключение из этого метода.Вот пример:

class MyItemProcessListener implements ItemProcessListener {

    @Override
    public void beforeProcess(Object item) {

    }

    @Override
    public void afterProcess(Object item, Object result) {
        if (result == null) {
            throw new RuntimeException("Failing job because processing of item " + item + " returned null");
        }
    }

    @Override
    public void onProcessError(Object item, Exception e) {

    }
}

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

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

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