我有一个类,它是读取器/处理器/写入器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();
}
}