csv ファイルを処理し、それらをレコードとしてデータベースに挿入するルートがあります。これは巨大な csv ファイルであり、Camel csv-splitter がメモリ不足になったため、独自のスプリッターを作成する必要がありました。ProducerTemplate を使用してスプリッターを作成しました。
csv を処理するルートは、次のようになります。
<route id="processCsvRoute">
<from ref="inbox" />
<to uri="bean:csvBean?method=process"/>
</route>
csvBean で分割を行い、最後に csv 行ごとに次の Java コードを実行します (csv 行は製品オブジェクトになります)。
producer.sendBodyAndHeader("direct:csvAggregator", product, "ID", csv.getFilename());
いいえ、csvAggregator-route は csv を取得しません:
<route id="csvAggregator">
<from uri="direct:csvAggregator" />
<aggregate strategyRef="exchangeAggregatorStrategy"
completionSize="10000"
completionInterval="10000"
parallelProcessing="true">
<correlationExpression>
<header>ID</header>
</correlationExpression>
<to uri="bean:batchInsertBean"/>
</aggregate>
</route>
processCsvRoute でアグリゲーターを定義する方法はありますか? 私のソリューションは機能していますが、別のルートを作成する必要があるとは思えません。
ご協力いただきありがとうございます。