Camel-SQL Почему использование StreamList загружает весь ResultSet? - PullRequest
0 голосов
/ 06 сентября 2018

Привет,

Что я пытаюсь сделать?

В настоящее время я работаю над проектом ESB (apache-camel + spring boot 2), где я читаю таблицу MySQL с более чем 100 000 000 строк. Я очищаю эту таблицу по 1 строке за раз, преобразовываю строку и отправляю ее в другую базу данных.

Как я это делаю?

В настоящее время я использую Camel-SQL для чтения данных

//edited .from(sql:SELECT * FROM mytable?outputType=StreamList&outpuClass=MyClass) .split(body()).streaming() .bean(mybean, "transform") .end()

Проблема:

Поскольку я не могу сделать выбор * и получить все 100M строк в моей оперативной памяти, поскольку она, возможно, недостаточно велика, я подумал об использовании потоков.

Таким образом: Похоже, что использование StreamList в качестве outputType все равно сначала получает все строки, а только затем возвращает его как «поток» (ResultSet).

Вопрос

Разве мы не можем просто использовать свойство PreparedStatement для действительно потоковой передачи данных из моей базы данных «по одной строке за раз», вместо того, чтобы получать их все сразу и уничтожать мою виртуальную память?

Спасибо.

...