如果当前批步骤输入为空,如何跳到下一个批步骤
How to skip to next batch step if current batch step input is null
我使用 spring 批处理框架创建了一个批处理作业,但是如果 reader return 为 null,则批处理作业将创建一个空文件。无论如何要跳到下一步并且不要创建文件。
<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>
如果您的 ItemWriter
是 FlatFileItemWriter
,您可以将 属性 shouldDeleteIfEmpty
设置为 true,这样它就不会在文件为空时创建文件。
<bean class="org.springframework.batch.item.file.FlatFileItemWriter">
<property name="shouldDeleteIfEmpty" value="true"></property>
</bean>
如果您的 ItemWriter
是自定义项目编写器,那么您可以应用自己的逻辑来不创建文件。
无论哪种方式,都会进入下一步。
我使用 spring 批处理框架创建了一个批处理作业,但是如果 reader return 为 null,则批处理作业将创建一个空文件。无论如何要跳到下一步并且不要创建文件。
<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>
如果您的 ItemWriter
是 FlatFileItemWriter
,您可以将 属性 shouldDeleteIfEmpty
设置为 true,这样它就不会在文件为空时创建文件。
<bean class="org.springframework.batch.item.file.FlatFileItemWriter">
<property name="shouldDeleteIfEmpty" value="true"></property>
</bean>
如果您的 ItemWriter
是自定义项目编写器,那么您可以应用自己的逻辑来不创建文件。
无论哪种方式,都会进入下一步。