在我的一个批处理中,我需要调用一个Web服务来从db中读取的项中丰富一些数据,检查一些值,然后将这个rich项写入另一个表。 我的Web服务可以在同一个呼叫中支持多个请求,以最大限度地减少对Web服务的调用次数。实际上我的网络服务电话被定义为处理器:
<batch:tasklet task-executor="taskExecutor">
<batch:chunk reader="bookingReader" processor="bookingEnrichWSProcessor"
writer="bookingCompositeWriter" commit-interval="10" />
</batch:tasklet>
似乎只有项目编写者可以支持在步骤定义中使用属性commit-interval在一次调用中编写多个项目。
我需要的是与读者一起阅读10到10个项目,然后在另一个表格中再次使用10个项目调用ws。
是否可以在处理器类中执行此操作?或者我应该在作家中移植这个逻辑。
感谢您的帮助
答案 0 :(得分:1)
您应该更改您的阅读器,处理器和编写器:阅读器必须输出一个对象。 该对象可以是List&lt;东西&GT;
然后处理器将此List作为参数获取,并可以使用列表中的项目调用WS。
最后,作者还将获得一个对象列表。你写的。不要忘记删除commit-interval:当你只处理一个对象(一个包含10个元素的List)时,你将commit-interval设置为1(如果你想编写你的10个元素)。