在 Spring 批处理中循环

Gio*_*sti 5 spring spring-batch

我在 Spring Batch 中进行了第一步的简单配置:

<batch:job id="collaborationJob" >
    <batch:step id="collaborationJobStep1">
        <batch:tasklet>
            <batch:chunk reader="collaborationAlertReader" processor="WriteCollaborationPruningProcessor" writer="alertCollaborationPruningWriter"
                commit-interval="10">
            </batch:chunk>
        </batch:tasklet>
        <batch:next on="*" to="collaborationJobStep2" />
        <batch:next on="FAILED" to="collaborationJobStep4"/>
    </batch:step>
Run Code Online (Sandbox Code Playgroud)

如果我在 itemReader 中读取的行数 < 10 一切都很好,但如果行数 >= 10 我进入重复循环:

2015-09-29 17:02:40,782 DEBUG [org.springframework.batch.core.step.tasklet.TaskletStep] - <Saving step execution before commit: StepExecution: id=1332, version=878, name=collaborationJobStep1, status=STARTED, exitStatus=EXECUTING, readCount=8780, filterCount=0, writeCount=8780 readSkipCount=0, writeSkipCount=0, processSkipCount=0, commitCount=878, rollbackCount=0, exitDescription=>

2015-09-29 17:02:40,786 DEBUG [org.springframework.batch.repeat.support.RepeatTemplate] - <Repeat operation about to start at count=879>

2015-09-29 17:02:40,786 DEBUG [org.springframework.batch.core.scope.context.StepContextRepeatCallback] - <Preparing chunk execution for StepContext: org.springframework.batch.core.scope.context.StepContext@664020c7>

2015-09-29 17:02:40,786 DEBUG [org.springframework.batch.core.scope.context.StepContextRepeatCallback] - <Chunk execution starting: queue size=0>

2015-09-29 17:02:40,787 DEBUG [org.springframework.batch.repeat.support.RepeatTemplate] - <Starting repeat context.>

2015-09-29 17:02:40,787 DEBUG [org.springframework.batch.repeat.support.RepeatTemplate] - <Repeat operation about to start at count=1>

2015-09-29 17:02:40,791 DEBUG [org.springframework.batch.repeat.support.RepeatTemplate] - <Repeat operation about to start at count=2>

2015-09-29 17:02:40,791 DEBUG [org.springframework.batch.repeat.support.RepeatTemplate] - <Repeat operation about to start at count=3>

2015-09-29 17:02:40,791 DEBUG [org.springframework.batch.repeat.support.RepeatTemplate] - <Repeat operation about to start at count=4>

2015-09-29 17:02:40,791 DEBUG [org.springframework.batch.repeat.support.RepeatTemplate] - <Repeat operation about to start at count=5>

2015-09-29 17:02:40,791 DEBUG [org.springframework.batch.repeat.support.RepeatTemplate] - <Repeat operation about to start at count=6>

2015-09-29 17:02:40,791 DEBUG [org.springframework.batch.repeat.support.RepeatTemplate] - <Repeat operation about to start at count=7>

2015-09-29 17:02:40,791 DEBUG [org.springframework.batch.repeat.support.RepeatTemplate] - <Repeat operation about to start at count=8>

2015-09-29 17:02:40,791 DEBUG [org.springframework.batch.repeat.support.RepeatTemplate] - <Repeat operation about to start at count=9>

2015-09-29 17:02:40,791 DEBUG [org.springframework.batch.repeat.support.RepeatTemplate] - <Repeat operation about to start at count=10>

2015-09-29 17:02:40,791 DEBUG [org.springframework.batch.repeat.support.RepeatTemplate] - <Repeat is complete according to policy and result value.>

2015-09-29 17:02:40,793 DEBUG [org.springframework.batch.core.step.item.ChunkOrientedTasklet] - <Inputs not busy, ended: false>

2015-09-29 17:02:40,793 DEBUG [org.springframework.batch.core.step.tasklet.TaskletStep] - <Applying contribution: [StepContribution: read=10, written=10, filtered=0, readSkips=0, writeSkips=0, processSkips=0, exitStatus=EXECUTING]>
Run Code Online (Sandbox Code Playgroud)

我的配置有什么问题吗?提前致谢

cac*_*bre 0

应用于块(甚至DefaultResultCompletionPolicy)的一些策略正在等待读取结束(当它们不再可读时,read()读取器的方法需要返回)。null

因此,请检查read阅读器中的方法在读取完成后collaborationAlertReader是否返回(例如,如果该方法返回空列表,则您的步骤将进入无限循环)。nullread