2012-06-28 53 views
2

我应该设计应当由在Java中使用多线程实现以下任务的文件是巨大的/多,任务在很短的窗口出现一个组件阅读:多线程批量处理写入和从数据库

  1. 读取多个CSV/XML文件,并保存所有的数据在数据库
  2. 读取数据库并在不同的文件CSV &个XML为每TXN类型写入数据。 (每个文件可以包含不同类型的记录生活中的文件头,批头,batchfooter,文件页脚,不同的事务,并校验记录)

我是很新的多线程&做对Spring Batch的一些研究,以用它来完成上述任务。

请让我知道你在建议Java或Spring Batch的使用传统多线程的。输入源在这里是多个,输出源也是多个。

回答

1

Spring Batch的是理想的实现您的要求。首先,您可以使用内置读取器和编写器来简化您的实现 - 解析CSV文件,XML文件,通过JDBC从数据库中读取等方式提供了非常好的支持。您还可以获得诸如发生故障时重试等功能的好处,跳过无效输入,重新启动整个作业,如果两者之间出现故障 - 框架将跟踪从停止的地方重新启动状态&。自己实现所有这些非常复杂,而且做得很好需要很多努力。

一旦你实现弹簧批它可以让你并行它简单的方法你的批处理作业。一个步骤可以在多个线程中运行 - 主要是配置更改。如果您有多个步骤可以执行,您也可以对其进行配置。如果需要,还支持在多台机器上分配处理。大部分实现并行性的工作都是由Spring Batch完成的。

我强烈建议你原型一对夫妇的最复杂的场景与Spring Batch的。如果这样,你可以继续使用Spring Batch。自己实施它,特别是当你是多线程新手时,这是一个可靠的配方。

+0

谢谢gkamal我一定会试试看。一旦我达成目标,会更新社区,谢谢。 – Shriram

+0

我完全同意gkamal,但你必须记住,你的数据库将按顺序运行请求 – eliasah

3

我会建议从框架的东西去,而不是自己编写整个螺纹部。我已经成功地使用了Sping's tasks and scheduling来执行计划任务,涉及从数据库中获取数据,进行一些处理,发送电子邮件,将数据写回数据库)。

+0

谢谢格雷。如果能回答我下面的问题,我将不胜感激。我们正在使用的批处理服务器可能有多个内核16-20。 Spring Batch是否支持多核心多进程功能。此外,文件格式非常复杂,因此使用Spring批处理可以实现读取复杂文件和编写复杂文件? – Shriram

相关问题