我们在项目中使用Apache Camel File Poller,我们遇到了一个问题。我们将文件放入一个目录中并完美地处理它并将其传输到正确的目录。如果放入传入目录的文件太大,我们有readLockTimeout和readLockCheckIntervals,如果完全传输将尝试获取锁定,否则它将每隔几秒重试一次。这是我们的问题所在。
假设我丢弃了FileA(3gb),FileB(250mb),FileC(300MB),并且驼峰获得的第一个锁是FileA。理想情况下,FileA仍然被转移到该目录中,因为它太大了!所以骆驼正在做的是它试图锁定它并失败并且每隔几秒钟就完成它,这是完全正常的。不合适的部分是FileB和FileC只是坐在那里等待处理FileA。我的问题是如何使锁定行动顺序。我的意思是,如果它获取了FileA上的锁并且它仍在处理,它会跳过文件并转到FileB然后处理它。
答案 0 :(得分:1)
您应该使用camel文件使用者[使用排除URI选项]跳过的扩展名复制文件,然后重命名该文件。通过这种方式,您可以在复制完成之前完全避免与Camel文件使用者发生冲突。
答案 1 :(得分:0)
您可以尝试减少readLockTimeout
参数值。 Jvadoc(摘录):
读取锁定的可选超时(以毫秒为单位),如果支持的话 读锁。如果无法授予读锁定和超时 触发后,Camel将跳过该文件。在下次民意调查中,Camel会尝试 该文件再次出现,这次可能会授予读锁定权。
因此,当发生超时时,Camel将跳过该文件并稍后返回。