2017-04-14 82 views
0

我有駱駝航線駱駝文件:停止路由時,所有文件都處理

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

但它仍然民調持續

注:我使用的彈簧駱駝。

回答

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&amp;action=stop"/> 
    </onCompletion> 
    <unmarshal> 
     <csv delimiter="|" quoteDisabled="true" /> 
    </unmarshal> 
    <to uri="bean:csvProcessor?method=processNew" /> 
</route> 
+1

爲了避免任何問題,在關閉期間,例如,如果另一個文件被調查,一個好的做法是把「異步=真」在控制總線URI方案。 –