Spring Batch提交间隔动态值

时间:2019-05-08 11:40:58

标签: spring-batch

我有一个Spring batch job,带有标准的读取器,写入器和处理器

我有一个简单的要求,如下所示:

1)不论读取的记录是什么,所有内容都应通过处理器进行处理

2)我的阅读器通过SQL查询读取记录  因此,如果读者阅读了 100条记录,则应立即将所有信息都传递给作家

3)如果读取 1000条记录,则应一次通过所有1000条记录

4)因此,从本质上讲, commit-interval 在这里是动态的,而不是固定的。

5)有什么方法可以实现?

编辑:

为了更加清晰,在sprint批处理中,commit-interval扮演着面向块的处理的角色 例如:如果chunk-size = 10,则读取器读取10条记录,将一条记录逐1传递给处理器,并在commit-interval(计数= 10)下,所有记录均由writer写入。

现在,我们想要的是动态提交间隔。不论读者正在阅读什么,所有内容都会立即传递给作家

1 个答案:

答案 0 :(得分:0)

可以使用chunk-completion-policy属性来实现。

<step id="XXXXX">
            <tasklet>
                <chunk reader="XXXReader"
                       processor="XXXProcessor"
                       writer="XXXWriter"
                       chunk-completion-policy="defaultResultCompletionPolicy">
                </chunk>
            </tasklet>
        </step>

<bean id="defaultResultCompletionPolicy" class="org.springframework.batch.repeat.policy.DefaultResultCompletionPolicy" scope="step"/>

我们还可以编写自定义的块完成策略

查看此帖子

Spring Batch custom completion policy for dynamic chunk size