2012-07-11 106 views
0

高级要求如下: 我有一个输入表(INPUT),我应该从中读取数据,将它发送到外部服务进行验证,并更新输出表中的验证响应。基于各种样本,我已经实施了这一个。弹簧批量策略

但是,输入表是扁平结构。即,例如:一张学生表,其中有一张表中的学生有多个考试成绩。当我发送它进行验证时,我必须检索学生的所有记录并将其发送给验证。 另一个问题是并行处理。打到外部服务将有一些网络延迟,我们希望进行并行处理以进行读取,处理和写入,或进行处理和写入。

我想知道可行的读者,作家和加工者在哪里可以做到。

请帮帮我。

回答

0

我建议你创建一个读取器,它将从表中读取你的数据。产生的单个元素(在我的其他解释中命名为E)必须能够发送给您的验证服务。

然后编写一个具有前面参数E的处理器。它调用您的验证服务。验证结果将是您的处理器(名为O)的输出。

最后,创建一个Writer,它将O作为参数,其作用是将最终数据写入数据库。

并行处理将通过弹簧配置完成,使用ThreadPoolTaskExecutor。重要的部分是以线程安全的方式编写您的Reader,Processor和Writer。

为了更好的表演,你还应该检查参数提交间隔(在作家),如果你使用Hibernate,检查其批处理能力(我通常会找到这样做的25批次插入/更新的最佳性能-30个请求)。