2013-04-30 88 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条记录。