2017-04-14 5 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> 

を持つルートを停止します。

このジョブが1回トリガーされた場合は、ポーリングを停止します。すべてのファイルが処理されている場合

ルートは

私はこれをどのように行うことができますを停止する必要があります?

私は

<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

は、例えば、別のファイルがポーリングされる場合は、良い習慣はcontrolbusのURIオプションで「非同期= true」を置くことで、シャットダウン時にすべての問題を避けるために。 –

関連する問題