私はpostgresから別のDBにデータを取り込みしようとしており、camel-jdbcコンポーネントを使用しています。私は大きなテーブルを持っているので、テーブル全体ではなく、一度にいくつかの行を読みたいと思っています。私のルートは以下のようになります(テスト目的のみ) from(fromUri).setBody( "select * from table limit 10").to( "jdbc:// myDataSource?resetAutoCommit = false & statement.fetchSize = 2") 上記のように、テスト目的では一度に10行しか取得できません。フェッチサイズを2に設定して、2行しか受け取らないようにしました。時間。しかし、私はまだ全部で10行を受け取っています。クエリから "limit 10"を削除すると、分割コマンドの直前にメモリ不足エラーが表示され、メモリに結果セット全体をロードしようとしていることがわかります。camel jdbcメモリ不足例外
私はここで何が間違っているのですか、何が間違っていますか?
ありがとうございました。
statement.maxRows。それは2行だけを返し、残りの8行は私が望んでいないものを破棄します。 – Pri
Camel JDBC uriにoutputType = StreamListを設定し、ドキュメントを読んでください:http://camel.apache.org/jdbc –
私はすでにそれを試みました。私のルートがどこから始まったのか(fromUri).setBody(select * from table).to( "jdbc:// myDataSource?outputType = StreamList).split(body()).streaming().processテスト)上記のルートは、メモリ内のテーブルからすべてのデータをロードしようとすると処理され、ボディを分割する前にメモリエラーをスローします。 – Pri