Apache camel 驼峰文件轮询器跳过已处理的文件

Apache camel 驼峰文件轮询器跳过已处理的文件,apache-camel,Apache Camel,我们在项目中使用ApacheCamel文件轮询器,我们遇到了一个问题。我们将文件放入一个目录,它会完美地处理文件并将其传输到正确的目录。如果放入传入目录的文件太大,我们有readLockTimeout和ReadLockCheckInterval,它们将在完全传输时尝试获取锁,否则它将每隔几秒钟重试一次。这就是我们的问题所在 假设我删除了FileA(3gb)、FileB(250mb)、FileC(300MB),camel获得的第一个锁是FileA。理想情况下,FileA仍然被传输到该目录中,因为它

我们在项目中使用ApacheCamel文件轮询器,我们遇到了一个问题。我们将文件放入一个目录,它会完美地处理文件并将其传输到正确的目录。如果放入传入目录的文件太大,我们有readLockTimeout和ReadLockCheckInterval,它们将在完全传输时尝试获取锁,否则它将每隔几秒钟重试一次。这就是我们的问题所在


假设我删除了FileA(3gb)、FileB(250mb)、FileC(300MB),camel获得的第一个锁是FileA。理想情况下,FileA仍然被传输到该目录中,因为它太大了!所以camel所做的是,它试图获取它的锁,但失败了,每隔几秒钟就进行一次,这是完全正确的。不好的部分是FileB和FileC只是坐在那里等待FileA被处理。我的问题是如何使锁按顺序动作。我的意思是,如果它获取了FileA上的锁,并且仍在处理,它将跳过该文件并转到FileB,然后处理该文件

您可以尝试减少参数值。Jvadoc(节选):

读取锁的可选超时(以毫秒为单位),如果 读锁。如果无法授予读取锁定,则超时 触发,则Camel将跳过该文件。在下一次投票中,骆驼将尝试 再次读取文件,这一次可能会授予读取锁定


因此,当超时发生时,Camel将跳过该文件,稍后再返回该文件。

您应该使用Camel文件使用者跳过的扩展名复制文件[使用排除URI选项],然后重命名该文件。这样,您将完全避免在复制完成之前与Camel文件使用者发生冲突