apache camel で SQL クエリの結果を分割する方法は? 結果として 1000 行が得られ、それらを 1 つずつではなくグループで処理したいとします (1 グループ = 10 行)。
次の Apache Camel 構成は、指定された RECORD_ID を持つレコードを探します。次のステップで、Camel の「スプリッター」は最初のクエリの結果を反復し、別のクエリを実行します。
たとえば、クエリ db.query.select.active.record の結果として 1000 行を取得した場合、 2 番目のクエリ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>