将处理器应用于多个项目而不是Spring批处理中的一个

时间:2012-07-27 05:25:10

标签: java spring-batch

在我的一个批处理中,我需要调用一个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。

是否可以在处理器类中执行此操作?或者我应该在作家中移植这个逻辑。

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

您应该更改您的阅读器,处理器和编写器:阅读器必须输出一个对象。 该对象可以是List&lt;东西&GT;

然后处理器将此List作为参数获取,并可以使用列表中的项目调用WS。

最后,作者还将获得一个对象列表。你写的。不要忘记删除commit-interval:当你只处理一个对象(一个包含10个元素的List)时,你将commit-interval设置为1(如果你想编写你的10个元素)。