Sap*_*asu 5 java file-processing watchservice apache-commons-io
我需要开发一个应用程序,一旦文件在预定义目录中创建,它将处理 csv 文件。预计会有大量传入文件。
我见过在生产中使用 Apache Commons IO 文件监控的应用程序。它工作得很好。我见过它一天处理多达 2100 万个文件。似乎 Apache Commons IO 文件监控会轮询目录并执行 listFiles 来处理文件。
我的问题:JDK WatchService 是否和 Apache Commons IO 文件监控一样好?有谁知道任何优点和缺点?
自从我问这个问题以来,我对这件事有了更多的了解。因此尝试回答那些可能有类似问题的人。
Apache commons 监控使用具有可配置轮询间隔的轮询机制。在每次轮询中,它都会调用 File 类的 listFiles() 方法,并与上一次迭代的 listFiles() 输出进行比较,以识别文件的创建、修改和删除。该算法足够强大,我从未见过任何失误。即使处理大量文件,它也能很好地工作。然而,由于它在每次迭代中轮询和调用listFiles,如果输入文件流入不多,它将消耗不必要的CPU周期。甚至可以在网络驱动器上运行。
JDK WatchService不需要轮询。它是基于事件的。它仅在事件发生时触发,因此如果输入文件流入不多,则需要较少的 CPU。如果输入文件流入量很大并且事件处理机制的处理速度比事件发生的速度慢,则可能存在事件溢出的可能性。此外,它不适用于网络驱动器。
因此,总而言之,如果文件流入持续且巨大,最好选择 Apache 文件监控。否则,JDK WatchService 是一个不错的选择。
| 归档时间: |
|
| 查看次数: |
3140 次 |
| 最近记录: |