我有骆驼路线
<routes xmlns="http://camel.apache.org/schema/spring">
<route startupOrder="1">
<from uri="file:D:\Work\eclipse_workspace\dataEngine_GIT_2\src\data" />
<unmarshal>
<csv delimiter="|" quoteDisabled="true" />
</unmarshal>
<to uri="bean:csvProcessor?method=processNew" />
</route>
</routes>
它不断轮询目录。
如果此作业被触发一次,我想停止轮询。
如果处理完所有文件,则路由应该停止
我该怎么做?
我在下面试过
<from uri="timer:foo?repeatCount=1" />
<pollEnrich>
<constant>file:D:\Work\eclipse_workspace\dataEngine_GIT_2\src\data</constant>
</pollEnrich>
但它仍在继续进行民意调查
注意:我使用的是Spring Camel。
答案 0 :(得分:4)
您可以订阅OnCompletion回调(在交换完成时调用)。您可以使用Control Bus EIP停止路线。
示例:
<route startupOrder="1" id="myRoute">
<from uri="file:D:\Work\eclipse_workspace\dataEngine_GIT_2\src\data" />
<onCompletion>
<to uri="controlbus:route?routeId=myRoute&action=stop"/>
</onCompletion>
<unmarshal>
<csv delimiter="|" quoteDisabled="true" />
</unmarshal>
<to uri="bean:csvProcessor?method=processNew" />
</route>
答案 1 :(得分:0)
CamelBatchComplete
交换属性可用于知道轮询是否完成,然后可以使用getContext().stopRoute()