public class YesterdayBean{
public String getYesterday(){
Calendar cal = Calendar.getInstance();
DateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy");
cal.add(Calendar.DATE, -1);
return dateFormat.format(cal.getTime());
}
}
<route>
<description>Route for copying file from one location to another with custom file name filter</description>
<from uri="file://C:\Source?filter=#customFileFilter" />
<to uri="file://C:\Destination" />
</route>
4条答案
按热度按时间bfrts1fy1#
嗯,不直接。日期:对象只能获取当前时间(或者你放在头中的某个时间值--这可以用java或类似语言来实现。
但你也可以这样做。创建一个类:
将它作为bean连接到Camel(或者spring,如果你使用的话)注册表中。如果你不确定怎么做,可以查找registry和bean的“using”部分。
假设您在注册表中将Bean命名为“yesterday”,其中包含Spring:
那么只需将其与file组件一起使用。
如果这只是您需要它的一个地方,并且您使用的是JavaDSL,那么您也可以使用java处理器预先创建日期,并将其放在头中。
就像这样:
wmtdaxz32#
Camel Simple
date
变量支持带偏移量的命令:支持的命令包括:
now
表示当前时间戳,[...]命令接受偏移,例如:now-24h
或header.xxx+1h
或甚至now+1h30m-100
。因此,您可以将分配编写为:
请注意,即使文档中未提及,
-1d
也等于-24h
。cotxawn73#
我对此很好奇,并从camel邮件列表中寻求了一些帮助。事实上,你可以用内联脚本来做你所要求的事情,比如groovy。参见here。
我得到了这个为我工作:
昨天我的文件名所在的位置:月日
您只需要将脚本主体更改为:
当然,您需要camel-groovy(或者您使用的任何脚本语言)。
mzmfm0qo4#
使用文件名过滤器的解决方案:
创建一个实现org.apache.camel.component.file.GenericFileFilter的类,并实现accept方法来验证文件名
在Spring配置中
和