camel jdbc内存不足异常

时间:2016-05-23 16:22:13

标签: apache-camel camel-jdbc

我正在尝试将数据从postgres提取到另一个数据库,我正在使用camel-jdbc组件来完成它。我有一个大表,所以我想一次读几行而不是整个表。所以我的路线如下所示(仅用于测试目的) from(fromUri).setBody(" select * from table limit 10")。to(" jdbc:// myDataSource?resetAutoCommit = false& statement.fetchSize = 2")。split( body())。streaming().process(test)

如上所示,我一次只能获得10行用于测试目的,我将fetchSize设置为2,一次只能接收2行。但是,我仍然收到所有10行。当我删除"限制10"从查询中我得到Out of Memory错误就在split命令之前,它告诉我它试图在内存中加载整个结果集。

我在这里错过了什么或者我做错了什么?

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我认为fetchSize更像是对JDBC驱动程序的暗示。您可以使用maxRows选项真正限制服务器端,例如statement.maxRows=2。您可以在JDBC javadoc文档中阅读有关这些选项的更多信息。

https://docs.oracle.com/javase/7/docs/api/java/sql/Statement.html