Java - 如何在Reader / Processor / Writer模式中优化此文件编写器组件

时间:2018-05-17 15:29:43

标签: java parallel-processing queue etl blocking

我有一个类,它是读取器/处理器/写入器ETL的处理器组件。

它将流式传输到它,一次一个包装器,它应该写入文件。但是,我认为写文件存在瓶颈,因为我可以看到文件大小一次缓慢上升3kb,而我知道流程类的调用频率要高得多。我可以在这里实现某种阻塞队列,等待更多的包装器在将它们写入文件之前到达吗?

public class RiskToFsProcessor extends Processor<> {
/**
 * Default implementation
 */
@Override
protected List<Object> process(Object wrapper) {
    FileUtils.writeLinesToFile(wrapper);
    return null;
}

writeLinesToFile(每次都附加到文件而不创建新文件):

public static void writeLinesToFile(String fileName, String[] lines) {
    try {
        // create dir if not exist
        File file = new File(fileName);
        file.getParentFile().mkdirs();

        PrintWriter writer = new PrintWriter(new BufferedWriter(new FileWriter(fileName, true)));
        for (String line : lines) {
            writer.println(line.trim());
        }
        writer.close();
        LOG.debug("Write to {} finished.", fileName);
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}

0 个答案:

没有答案