1

我有一个关于跳过的非常基本的问题。我正在使用 spring 示例提供的 spring-batch-simple-cli 项目,并试图了解跳过行为。这有一个非常基本的示例阅读器,它从字符串数组中读取(我已将其修改为从从 Hellowworld 1 到 Hellowworld 10 的 10 个字符串列表中读取)和一个记录到控制台的基本编写器。writer 在每次写入时抛出 java.lang.Exception。我在作业配置中添加了 4 的跳过限制。一旦到达 Hellowworld 5,作业就会按预期停止。但是每当 writer 抛出异常时,都会立即用相同的项目回调 writer。我的问题为什么作家被称为两次?我期待这个项目被跳过?有什么我想念的吗?

<job id="job1" xmlns="http://www.springframework.org/schema/batch" incrementer="jobParametersIncrementer">
    <step id="step1" parent="simpleStep">
        <tasklet>
            <chunk reader="reader" writer="writer" skip-limit="4" >
                <skippable-exception-classes>
                    <include class="java.lang.Exception" />
                </skippable-exception-classes>
            </chunk>
        </tasklet>
    </step>
</job>
4

1 回答 1

2

这很可能是由默认功能引起的,其中 Spring Batch 回滚块并再次重试每个块项目(在这种情况下只有一个项目)。

https://stackoverflow.com/a/6730807/1627688

于 2012-08-30T13:19:13.687 回答