我想知道这是否可以用 Apache Camel 来实现。我想做的是让 Camel 查看文件目录,并只复制“上次修改”日期比某个日期更新的文件。例如,仅复制 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 配置。感谢下面的回答。
是的,您可以实现一个过滤器,然后返回 true|false 如果您想包含该文件或不包含该文件。在该逻辑中,您可以检查文件修改并查看文件是否超过 X 天等。
请参阅 Camel 文件文档:
- http://camel.apache.org/file2
并寻找过滤器选项,例如您实施的位置org.apache.camel.component.file.GenericFileFilter
界面。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)