我尝试使用带有useIterator=true选项的camel-sql组件,但结果仍然加载到一个大列表中。我有两百万条记录要处理,在一个列表中获取结果集不是一个选项。以下是路由配置:
<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>从same代码可以清楚地看出,camel获取列表中的整个结果集,然后创建该结果集的迭代器。错误的设计。
发布于 2016-04-10 13:51:18
选项sql仅适用于消费者,例如当您在<from>中使用useIterator时。生产者端的sql组件不支持基于迭代的。
您可以通过设置OutputType=StreamList:http://camel.apache.org/jdbc来使用支持此功能的JDBC组件。
我记录了一个票据,以便将来在SQL组件中添加对此的支持:https://issues.apache.org/jira/browse/CAMEL-9849。
https://stackoverflow.com/questions/36518454
复制相似问题