我想在我的项目中使用camel使用camel的调度/计时器服务每隔xx分钟检查一个文件的最后修改日期。
我读了文件组件的文件似乎有一个轮询功能,但是还有一个用于camel的计时器组件。
如果我想要这个要求,任何人都有一些代码示例吗?
答案 0 :(得分:4)
我会使用文件消费者端点。
这样的事情:
file:c:/foldername?delay=5000
这将每隔5秒扫描文件夹中的文件,并为每个文件在路径上发送消息。
您可能需要将以前的时间存储在某个地方,例如文本文件或数据库,然后将消息中传递的修改后的变量与存储在数据库或文件中的修改后的变量进行比较。
一个粗略的例子如下:
<route id="CheckFileRoute">
<from uri="file:d:/RMSInbox?delay=5000&readLock=changed/>
<log message="${ file:modified }/>
<bean ref="CompareDates"/>
</route>
文件使用者将在标题中放置大量有关文件的信息,例如修改日期。请阅读此链接,了解标题http://camel.apache.org/file2.html
中变量的更多详细信息比较日期bean将是java类,其行为类似于具有如下结构的处理器:
public class CompareDates {
@Handler
public void CheckDates
(
@Body Object msgbody
, @Headers Map hdr
)
{
Date newDate = (Date)hdr.get("CamelFileLastModified");
Date oldDate = readfromfileorDatabase
if(newDate>oldDate)
{
//the date has changed look busy
}
}
希望这能让你前进。