【发布时间】:2013-06-13 04:10:40
【问题描述】:
我有一个直截了当的要求,我需要(从 DB)读取项目列表并需要处理这些项目,一旦处理,它必须更新到 DB。
我正在考虑使用带有读取器、处理器和写入器的 Spring 批处理块。我的阅读器将一次从列表中返回一个项目并将其发送到处理器,一旦处理结束,它会返回到 Writer 并更新数据库
稍后我可能会在这些方法中以一些同步成本对其进行多线程处理。
在这里我预见到一些问题。
- 要处理的项目数可能更多。可能有 10,000 甚至更多。
- 处理器中需要进行一些逻辑计算。因此一次处理 1 个项目。即使它是 10 线程的多线程,也不确定性能。
- Writer 可以更新数据库中该已处理项目的结果。不确定如何进行批量更新,因为它始终只有 1 项已处理并准备就绪。
这种方法对于这种用例是否正确,或者可以做任何更好的事情吗? 有没有其他方法可以在一次读取器、处理器和写入器的调用中处理一堆项目?如果是这样,我是否需要创建一些机制,从列表中提取 10 个项目并将其提供给处理器? 似乎作者更新了每条记录,只有当作者收到一堆已处理的项目时,批量更新才有意义。有什么建议吗?
为了更好的性能,请对该设计进行一些说明。
谢谢,
【问题讨论】:
标签: spring-batch