Apache Camel - 在轮询消费者之前立即执行任务

时间:2015-04-07 14:21:50

标签: java apache-camel

我正在尝试创建一个路由来轮询文件夹以查找与给定正则表达式匹配的文件。该路线旨在从该文件夹批量拾取文件。因为,文件移动到文件夹不是原子的,我需要在路由轮询之前调用DB sproc以获得控制流的原因。所以基本上在jdsl路由构建器中,而不是:

configure(){
    from("fileURI").processor(_dbUpdater).to(endpoint);
}

我需要这样的东西:

configure(){
    processor(_dbUpdater).from("fileURI").to(endpoint)
}

我知道这显然不起作用,但我正在努力做甚至可能吗?您可以在轮询消费者之前立即执行任务吗?

2 个答案:

答案 0 :(得分:0)

是的,您可以通过在流程开始时将端点添加直接端点来实现。所以你的路线看起来像是: -

从("直接:一个&#34)处理器(_dbUpdater)。为了(" fileURI所&#34)至(终点)

您可以阅读有关骆驼直接端点@ http://camel.apache.org/direct.html官方骆驼网站的更多信息。

答案 1 :(得分:0)

您可以编写Camel组件并在其中实现使用者的ScheduledPollConsumer实现。这将使它不断轮询。

轮询()

编写逻辑以从您指定的位置读取所有文件并匹配您的正则表达式。

一旦阅读,您可以在此处的消费者的poll方法中调用您的批处理逻辑。

此后,将批处理添加到Exchange对象。

如果您的组件的前缀是comp并且要读取的位置是c:/ readlocation,那么您的驼峰路线将如下所示。

 from("comp:c:/readlocation").to("endpoint")