Компонент Camel-SQL useIterator не работает должным образом

Я пытаюсь использовать компонент camel-sql с параметром useIterator=true, но результат все равно загружается в один большой список. У меня есть 2 миллиона записей для обработки, и получение набора результатов в одном списке не вариант. Ниже приведена конфигурация маршрута:

<route id="sql_route">
    <from uri="activemq:MW_SQL"/>
    <to uri="sql:SELECT ID, MSGID_PROD FROM amq.activemq_msgs?useIterator=true"/>
    <log message="This data is = ${body}"/>
</route>

Из исходного кода видно, что верблюд берет весь набор результатов в список, а затем создает его итератор. Неправильный дизайн.


person Ravish Patel    schedule 09.04.2016    source источник


Ответы (1)


Вариант useIterator предназначен только для потребителя, например, когда вы используете sql в <from>. Компонент sql на стороне производителя не поддерживает итеративную основу.

Вместо этого вы можете использовать компонент JDBC, который поддерживает это, установив OutputType=StreamList: http://camel.apache.org/jdbc

Я зарегистрировал билет, чтобы добавить поддержку этого в компоненте SQL в будущем: https://issues.apache.org/jira/browse/CAMEL-9849

person Claus Ibsen    schedule 10.04.2016