1

我正在尝试使用带有选项的 camel-sql 组件,useIterator=true但结果仍会加载到一个大列表中。我有 200 万条记录要处理,并且无法将结果集放在一个列表中。下面是路由配置:

<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>

从源代码中可以清楚地看出,camel 将整个结果集放入列表中,然后创建相同的迭代器。错误的设计。

4

1 回答 1

0

该选项useIterator仅适用于消费者,例如当您在<from>. 生产者端的 sql 组件不支持基于迭代。

您可以通过设置来使用支持此功能的 JDBC 组件:http OutputType=StreamList: //camel.apache.org/jdbc

我记录了一张票,以便将来在 SQL 组件中添加对此的支持:https ://issues.apache.org/jira/browse/CAMEL-9849

于 2016-04-10T05:51:18.443 回答