2017-02-08 80 views
0

我有一對駱駝平行路線。一個是讀取sql數據。一種是讀取磁盤上的文件,然後與之前的sql數據進行比較。我需要運行路線1,並根據是否有任何東西導入,運行路線2.駱駝從直接讀取文件和過程

fromF("quartz2://mio/%s?cron={{route_1_cron}}", order). 
     log("Running data import..."). 

     to("sql:{{sql_select}}"). 
      choice(). 
       when(body().isNull()). 
        stop(). 

       when(body().isNotNull()). 
       bean(Utility.class,"incomingSqlData"). 
       choice().when(header("status").isEqualTo(true). 
       to("direct:start").stop(); 

到目前爲止我很好。現在在第二條路線上,我如何從(direct:start)開始,然後從它的目錄中讀取文件?由於我不能從(直接).from(「file:..」),因爲這將創建兩個從路線。 從(「直接:開始」)到(「文件:...」)使用將嘗試寫入文件

TL:博士:我應該如何開始與直接的路線,然後文件

+0

看看內容豐富和/或pollEnrich:http://camel.apache.org/content-enricher.html – noMad17

回答

1

爲了擴大對@ noMad17評論,你可以使用一個內容富集所以,您from("direct:start")路線可以是這個樣子:

from("direct:start") 
    .pollEnrich("file:...", new MyAggregationStrategy()) 
    .... 

這將提示你的路線,閱讀一個文件。

請注意,AggregationStrategy「用於組合原始交換和資源交換」並且是可選的。如果沒有提供,那麼資源交換的主體(即通過讀取文件產生的交換)將覆蓋原始交換。