Как перейти к следующему пакетному шагу, если текущий шаг пакетного ввода пуст

Я создал пакетное задание с использованием Spring Batch Framework, но если читатель вернет ноль, пакетное задание создаст пустой файл. В любом случае, чтобы перейти к следующему шагу и не создавать файл.

<batch:job id="MY_BATCH_JOB">
    <batch:step id="step1" next="step2">
        <batch:tasklet>
            <batch:chunk reader="itemReader" writer="itemWriter"
                processor="itemProcessor" commit-interval="2">
            </batch:chunk>
            <batch:listeners>
                <batch:listener ref="readListener" />
            </batch:listeners>
        </batch:tasklet>
    </batch:step>
    <batch:step id="step2">
        <batch:tasklet>
            <batch:chunk reader="itemReader2" writer="itemWriter2"
                processor="itemProcessor2" commit-interval="2">
            </batch:chunk>
        </batch:tasklet>
    </batch:step>
</batch:job>

1 ответ

Решение

Если твой ItemWriter это FlatFileItemWriterВы можете установить свойство shouldDeleteIfEmpty true, чтобы он не создавал файл, если он пуст.

<bean class="org.springframework.batch.item.file.FlatFileItemWriter">
    <property name="shouldDeleteIfEmpty" value="true"></property>
</bean>

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

В любом случае, это перейдет к следующему шагу.

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