在Spring批处理中调用ItemProcessor

时间:2016-10-15 06:17:51

标签: spring spring-batch

我创建了弹出批处理,它从平面文件读取并使用ItemProcessor处理数据,然后使用ItemWriter在DB中写入,所以一切正常。

问题现在我需要控制次数" 处理"调用方法来处理数据,我的itemprocessor调用一些带有详细信息的API,API需要一些时间来响应(不确定超时),因此,我不应该使用新消息重载API。我需要控制对API的调用,例如 在y秒 中调用X号码,如果到达,我需要等待 Z秒 ,然后恢复活动。

我不知道如何在spring批处理中实现这一点,我正在寻找在处理器中实现chunklistener来跟踪调用。但是,我正在寻找更好的方法。

1 个答案:

答案 0 :(得分:0)

你不需要听众来做这件事。

如果你没有在stop中定义异步taskexecutor,那么整个处理是完全顺序的。

它将读取一个项目,处理一个项目,读取下一个项目,处理它直到它被读取并处理你在commitsize中定义的项目( - >你的块的大小)。之后,它会将这些项目放入列表并将此列表转发给作者。将执行此过程,直到所有元素都已被读取,处理并最终写入。

如果你想并行处理你的块,那么你可以定义一个异步的taskexecutor。

如果在步骤中定义了AsyncTaskExeutor,则可以配置此TaskExecutor管理/创建的线程数。此外,您还可以定义步骤的限制限制,该限制定义了可以并行处理的块数。