我正在使用Spring Batch从Wikipedia XML转储文件中提取一些数据(一个30多个gig文件)。我使用StaxEventItemReader
读取标签,然后对每个页面进行一些分析。完成每个条目的分析后,我将生成的数据注入数据库。这是一个非常简单的Spring Batch工作流程:
read->process->write
我希望处理阶段是多线程的,因为它是独立的,处理器密集型,而写阶段不依赖于命令。
/process\
read<-process->write
\process/
我已阅读this个问题,其中最佳答案表示阶段之间的数据存储在JobRepository
中,并表示不建议在那里存储大量数据。
我在Spring Batch发行版中看到了'并行'示例,但它并行处理整个第二个“加载”步骤(即读取器,处理器和写入器),而不是仅仅并行运行处理。
是否可以说应该在特定大小的线程池中处理进程阶段?我的工作流程是否适合Spring Batch,或者将其重写为普通的J2SE程序更好?
答案 0 :(得分:0)
您的读者必须是线程安全的。 如果无法做到这一点,我建议你使用一个临时区域:
NoSQL数据库可能是存储登台数据的理想选择。