我想知道Apache Camel是否可以实现这一目标。我想做的是让Camel查看文件目录,并仅复制“Last Modified”日期比某个日期更新的那些。例如,仅复制在2014年2月7日之后修改的文件。基本上我想在每次Camel运行时更新“上次运行日期”的变量,然后检查文件是否在上次运行后被修改。
我想在文件上使用实际的时间戳,而不是Camel提供的任何东西...我的理解是Camel中有一个不推荐使用的方法,用于在Camel查看文件时标记文件,然后这样做让您知道它们是否已经处理过。但是这个功能已被弃用,所以我需要一个替代方案。
Apache建议在处理后移动或删除文件,以了解文件是否已被处理,但这不是我的选择。有任何想法吗?提前谢谢。
已解决(2014-02-10):
import java.util.Date;
import org.apache.camel.builder.RouteBuilder;
public class TestRoute extends RouteBuilder {
static final long A_DAY = 86400000;
@Override
public void configure() throws Exception {
Date yesterday = new Date(System.currentTimeMillis() - A_DAY);
from("file://C:\\TestOutputFolder?noop=true").
filter(header("CamelFileLastModified").isGreaterThan(yesterday)).
to("file://C:\\TestInputFolder");
}
}
不需要XML配置。感谢下面的答案。
答案 0 :(得分:1)
看一下Camel的File Language。看起来file:modified
可能就是您要找的东西。
答案 1 :(得分:1)
是的,您可以实现过滤器,如果要包含该文件,则返回true | false。在该逻辑中,您可以检查文件修改并查看文件是否超过X天等。
请参阅
中的Camel文档文档查找过滤器选项,例如,您实现org.apache.camel.component.file.GenericFileFilter
接口的位置。