2015-10-19 5 views
0

У меня есть очень простой маршрут, чтобы прочитать несколько строк из базы данных:Camel JDBC Route - 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"); 

Я хочу сделать некоторые очистки работы после всех строк/ломти обрабатываются, и хотел сравнить количество обработанных строк с помощью CamelJdbcRowCount из выбранного для этого.

Однако CamelJdbcRowCount не установлен вообще. Единственный заголовок JDBC, который я могу найти, - это имена CamelJdbcColumnNames.

Что мне не хватает?

Есть ли другой/лучший способ достичь того, чего я хочу, а не смотреть на подсчет строк?

EDIT: Я только заметил, что если я удалю 'outputType = StreamList', я получаю значение CamelJdbcRowCount, как ожидалось. Я предполагаю, что это имеет какое-то отношение к этому при использовании StreamList. Я получаю набор результатов и курсор/итератор, поэтому вы не можете рассчитывать количество строк. Было бы неплохо, если бы в документации это отразилось.

Как узнать, когда обрабатываются все строки?

+0

Какую версию верблюда вы используете? Может быть ошибка исправлена ​​в последней версии. Поэтому попробуйте обновиться. –

+0

О, я думаю, что StreamList по запросу, поэтому нет возможности заранее узнать общий счет –

ответ

0

Вы должны опустить часть ?outputType=StreamList в свой to -clause. Сам протокол журнала также может быть упрощен:

.log("read ${header.CamelJdbcRowCount} rows") 
Смежные вопросы