Я пытаюсь глотать данные из postgres в другую БД, и я использую компонент camel-jdbc для этого. У меня большой стол, поэтому я хочу читать несколько строк за раз, а не всю таблицу. поэтому мой маршрут выглядит ниже (только для целей тестирования) from (fromUri) .setBody ("select * from limit limit 10") .to ("jdbc: // myDataSource? resetAutoCommit = false & statement.fetchSize = 2") .split (body()). streaming(). process (test)camel jdbc out of memory exception
Как показано выше, я получаю только 10 строк за раз для целей тестирования, и я установил fetchSize в 2, чтобы получать только 2 строки при время. Тем не менее, я все еще получаю все 10 строк. Когда я удаляю «предел 10» из запроса, я получаю ошибку «Из памяти» непосредственно перед командой split, которая говорит мне, что пытается загрузить весь результирующий набор в память.
Что мне здесь не хватает или что я делаю неправильно?
Спасибо за помощь.
statement.maxRows = 2 реально не работает. все, что он делает, это возвращает только 2 строки и отбрасывает оставшиеся 8 строк, что не то, что я хочу. – Pri
Установить outputType = StreamList в url Jelbel Camel и прочитать документацию: http://camel.apache.org/jdbc –
Я уже пробовал это. То, откуда я первоначально начинался, где мой маршрут выглядел как (fromUri) .setBody (выберите * из таблицы) .to ("jdbc: // myDataSource? OutputType = StreamList) .split (body()) .streamstream() .process (тест). Вышеуказанный маршрут не обрабатывается событием, поскольку он пытается загрузить все данные из таблицы в памяти и выкидывает из памяти ошибку перед расщеплением тела. – Pri