2016-08-04 15 views
1

私は、より高速にクエリを実行するために、静的データをIgniteキャッシュにキャッシュしようとしています。そのため、キャッシュクラスターにデータを挿入するためにデータを読み取る必要があります。大規模なデータセットのCamel Sqlコンシューマーパフォーマンス

しかし、行数は300万に似ており、SqlComponentがすべてのデータを1つとして処理しようとしているためOutOfMemoryエラーが正常に発生し、すべてのデータを1回だけ収集しようとします。

結果セットを読み取るときに分割する方法はありますか(Exchangeごとに1000アイテム)。

答えて

1

使用するSQLデータベースに応じて、SQLクエリに制限を追加できます。

または、jdbcTemplate.maxRows=1000を使用してそのオプションを使用できます。しかし、それがそのオプションを使って制限をサポートしているかどうかは、JDBCドライバによって異なります。

また、処理後に行をマーク/削除する方法が必要なので、次のクエリでは選択されません(onConsumeオプションを使用するなど)。

あなたはonConsumeなどといくつかの例を見つけるためにユニットテストに見ることができます答えをhttps://github.com/apache/camel/tree/master/components/camel-sql/src/test

+0

THXを。実際、私の意見では、processor.process()行は部分的に動作するためにはすばらしいが、処理された項目は削除され、メモリ不足のエラーは消えるだろう。私はこれらに基づいて私自身のSqlConsumerを書いており、現在は動作しています。どうも – Neron

関連する問題