2015-10-19 118 views
0

我有一个非常简单的路线从数据库中读取一些行:骆驼JDBC路线 - CamelJdbcRowCount失踪

from("timer://runOnce?repeatCount=1&delay=1000"). 
      setBody(constant("select * from some_table")) 
      .to("jdbc:dataSource?outputType=StreamList") 
      .log("Processing $simple{in.header.CamelJdbcRowCount} rows") 
      .split(body()).streaming().to("direct:createChunk"); 

我想要做的所有行后,一些清理工作/块进行处理,并希望比较使用Select中的CamelJdbcRowCount处理的行数可以完成此操作。

但是,根本没有设置CamelJdbcRowCount。我能找到的唯一JDBC头是CamelJdbcColumnNames。

我错过了什么?

是否有另一种/更好的方式来实现我想要的而不是看行数?

编辑:我只注意到,如果我删除'outputType = StreamList',我得到CamelJdbcRowCount值如预期。我想这与使用StreamList时有关系我得到一个结果集和一个游标/迭代器,所以你不能真正地计算行数。如果文档反映了这一点会很好。

如何知道何时处理所有行?

+0

您使用的是哪种骆驼版本?可能是最新版本中修复的错误。所以尝试升级。 –

+0

哦,我认为StreamList是按需提供的,所以无法提前知道总数 –

回答

0

您必须在您的to条款中省略部分?outputType=StreamList。日志声明本身也可以简化:

.log("read ${header.CamelJdbcRowCount} rows")