如何在 apache camel 中拆分 sql 查询的结果?假设您将获得 1000 行作为结果,并且您希望不是一一处理而是分组处理它们,例如 1 组 = 10 行。
按照 Apache Camel 配置查找具有给定 RECORD_ID 的记录,在下一步中,Camel“拆分器”迭代第一个查询的结果并运行另一个查询。
例如,如果我们得到 1000 行作为查询db.query.select.active.record的结果,那么第二个查询db.query.select.compute.statistics将运行 1000 倍(对于前一个查询的每一行)。由于性能不是最佳的,我们想创建一组 RECORD_ID 例如:第一个查询将返回 1000 行,我们会将其分成 100 个组(每组 10 行),然后我们可以只运行 100 次查询。
示例配置:
<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>