Camel-SQL Почему использование StreamList загружает весь ResultSet?

Привет,

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

В настоящее время я работаю над проектом 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 для действительно потоковой передачи данных из моей базы данных "по одной строке за раз", вместо того, чтобы получать их все сразу и уничтожать мою виртуальную память?

Благодарю.

0 ответов

Другие вопросы по тегам