2015-07-21 80 views
1

我是駱駝新手。讓我解釋我的業務需求,我有文件夾A中的10個文件。在特定的時間,所有這10個文件將被處理並執行業務邏輯並將文件移動到文件夾B。每個文件分別放置一個完成文件。我需要處理來自文件夾B的文件以進行下一次業務操作。但是我只有在所有10個完成文件都被放置後才需要啓動這個過程。直到完成我以前的過程中的所有10個文件,我不應該開始這個過程。如何在駱駝中做到這一點。如何處理所有文件完成並在駱駝完成的地方

注: 我不想爲我的第二條路線使用任何cron。 10個文件是假設。它可以是動態的

在此先感謝

回答

0

您可以將Aggregator繼續處理的第二部分之前彙總處理的文件。

您將有類似以下的東西:

<route> 
    <from uri="file://<Folder A>" /> 

    <!-- your business logic --> 

    <aggregate strategyRef="aggregatorStrategy" ...> 
    ... 
    </aggregate> 

    <!-- here goes the business logic used to poll files from Folder B --> 

</route> 
0

也許你可以使用一個 「alldone」 文件:

<route> 
    <from uri="file://<Folder A>?scheduler=<particular time>" /> 
    <!-- your business logic part 1--> 
    <to uri="file://<Folder B>" /> 
    <choice> 
    <when> 
     <simple>${exchangeProperty.CamelBatchComplete}</simple> 
     <setBody><constant>null</constant></setBody> 
     <setHeader headerName="CamelFileName"> 
     <simple>alldone</simple> 
     </setHeader> 
     <to uri="file://<Folder B>" /> 
    </when> 
    <choice> 
</route> 

<route> 
    <from uri="file://<Folder B>?doneFileName=alldone" /> 
    <!-- your business logic part 2--> 
</route>