我有一个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写入。
现在,我们想要的是动态提交间隔。不论读者正在阅读什么,所有内容都会立即传递给作家
答案 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