如何在apache camel中分割sql查询的结果?假设您将获得1000行作为结果,并且您希望不是逐个处理它们,而是在组中,例如1组= 10行。
在Apache Camel配置之后查找具有给定RECORD_ID的记录,在下一步中,Camel“splitter”迭代第一个查询的结果并运行另一个查询。
例如,如果我们根据查询 db.query.select.active.record 得到1000行,那么第二个查询 db.query.select.compute.statistics 将运行1000x(对于先前查询的每一行)。由于性能不是最佳的,我们希望创建一组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 :(得分:0)
在“sql:{{db.query.select.active.record}}”后拆分路由怎么样?结果可以发送到SEDA端点,您可以配置10个SEDA消费者,它们将同时处理10个记录