3

如何在 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>
4

1 回答 1

0

在“sql:{{db.query.select.active.record}}”之后拆分路由怎么样?结果可以发送到 SEDA 端点,您可以配置 10 个 SEDA 消费者,它们将同时处理 10 条记录

于 2014-06-05T13:56:30.030 回答