【问题标题】:Apache camel : how to split sql result into groupsApache骆驼:如何将sql结果分成组
【发布时间】:2013-04-23 19:15:04
【问题描述】:

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

【问题讨论】:

    标签: oracle apache-camel


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-16
      相关资源
      最近更新 更多