2013-04-30 86 views
3

如何拆分apache camel中的sql查詢結果?讓我們說你會得到1000行的結果,你想不是一個接一個地處理它們,而是分組1組= 10行。阿帕奇駱駝:如何將sql結果拆分成組

以下Apache Camel配置查找具有給定RECORD_ID的記錄,在下一步中,Camel「splitter」迭代第一個查詢的結果並運行另一個查詢。

例如,如果我們得到1000行作爲查詢的結果db.query.select.active.record然後第二個查詢db.query.select.compute.statistics將運行1000倍(對於以前的查詢的每一行)。由於性能不是最優的,我們想創建一組RECORD_ID例如:第一個查詢會返回1000行,我們會將它分成100個組(每組10行),然後我們只能運行100x的查詢。

示例配置:

<route> 
    <from uri="seda:retrieveAlphaData" /> 
    <process ref="alphaResourceInitializer"/> 
    <to uri="sql:{{db.query.select.active.record}}" /> 
    <camel:split> 
     <camel:simple>${in.body}</camel:simple> 
     <camel:setHeader headerName="recordId"> 
      <camel:simple>${in.body[RECORD_ID]}</camel:simple> 
     </camel:setHeader> 
     <setBody> 
      <simple>${in.body[RECORD_NAME]}</simple> 
     </setBody> 
     <to uri="sql:{{db.query.select.compute.statistics}}" /> 
     <process ref="allActiveRecordDataFormatTransformer" /> 
     <camel:marshal ref="json" /> 
     <to uri="bean:activeRecordSdbPersister?method=processIt" /> 
    </camel:split> 
</route> 

回答

0

如何分裂路線,在 「SQL:{{db.query.select.active.record}}」?結果可以發送到SEDA端點,您可以配置10個SEDA使用者,它們將同時處理10條記錄。