1

在我的一个批次中,我需要调用一个 Web 服务来丰富从数据库中读取的项目中的一些数据,检查一些值,然后将这个丰富的项目写入另一个表。我的 Web 服务可以在同一个调用中支持多个请求,以尽量减少对 Web 服务的调用次数。实际上我的网络服务调用被定义为一个处理器:

<batch:tasklet task-executor="taskExecutor">
  <batch:chunk reader="bookingReader" processor="bookingEnrichWSProcessor"
    writer="bookingCompositeWriter" commit-interval="10" />
</batch:tasklet>

似乎只有项目编写器可以支持在步骤定义中使用属性 commit-interval 在一次调用中编写多个项目。

我需要的是与阅读器一起阅读 10 个项目,然后用 10 个项目调用 ws,然后再将它们写入另一个表。

是否可以在处理器类中做到这一点?或者我应该在作家中移植这个逻辑。

感谢我们的帮助

4

1 回答 1

1

你应该改变你的阅读器、处理器和编写器:阅读器必须输出一个对象。这个对象可以是一个列表<something>。

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

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

于 2012-07-27T07:45:57.020 回答