2

我想在我的项目中使用骆驼,使用骆驼的调度/计时器服务每 xx 分钟检查一次文件的最后修改日期。

我阅读了文件组件的文档,似乎有一个轮询功能,但是还有一个用于骆驼的计时器组件。

如果我想满足要求,有人有一些代码示例吗?

4

1 回答 1

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
           }
}

希望这能让你继续前进。

于 2013-08-07T06:04:58.993 回答