我有一个方案,我们有spring spring集文件轮询器,等待文件添加到目录,一旦写完我们处理文件。我们有一些大文件和慢速网络所以在某些情况下我们担心当轮询器唤醒并尝试处理文件时文件传输可能没有完成。
我在' file-inbound-channel-unable-to-read-file'上发现了这个话题。建议在处理之前使用custom filter to check if the file is readable。
第二个主题' how-to-know-whether-a-file-copying-is-in-progress-complete'建议文件必须是可写的才能被认为可以处理。
我可能已经预料到这个文件是可读/可写的检查已经由核心弹簧集成代码完成了吗?
与此同时,我计划按照第一个主题创建过滤器,但使用' rw'检查第二个建议。
答案 0 :(得分:2)
这是一个经典问题,只是检查文件是否可写是不可靠的 - 如果网络在文件传输过程中崩溃会怎样?您仍然会有一个不完整的文件。
处理此问题的最可靠方法是让发件人使用临时后缀发送文件,并在传输完成后重命名。另一种常见技术是发送第二个文件foo.done
,表示foo.xxx
已完成,并使用自定义过滤器。