Ah yeah that is intended. The onConsume runs after the exchange is complete. So you need to store the id somewhere in a header or something if you modify the message body.
.setHeader("rowId").simple("${body.vrow_id}") .threads... And then use the header in the onConsume On Thu, Apr 7, 2016 at 9:46 AM, onders <ondersezgin+camelu...@gmail.com> wrote: > no, this does not help :( > > when i debug, interestingly i can see onConsume gets exhange's body as the > output of bean bound on from("direct:generateLine"...) route which is > LineGenerator.. > > from("sql:select rowid vrowid from myTable where nstatus = 0?outputClass=" + > MyBean.class.getName() > + "&onConsume=update myTable set nstatus = 1 where rowid = > :#${body.getVrowid()}") > > .routeId("mySimpleRoute").threads(5).to("direct:generateLine").end(); > > from("direct:generateLine").process(new > LineGenerator()).to("amq:queue:jms.simpleQueue"); > > org.apache.camel.language.bean.RuntimeBeanExpressionException: Failed to > invoke method: getVrowid() on null due to: > org.apache.camel.component.bean.MethodNotFoundException: Method with name: > getVrowid() not found on bean: testField1|textField2| > of type: java.lang.String. Exchange[] > at > org.apache.camel.language.bean.BeanExpression$OgnlInvokeProcessor.process(BeanExpression.java:321) > at > org.apache.camel.language.bean.BeanExpression.evaluate(BeanExpression.java:114) > at > org.apache.camel.language.bean.BeanExpression.evaluate(BeanExpression.java:138) > at > org.apache.camel.model.language.ExpressionDefinition.evaluate(ExpressionDefinition.java:126) > at > org.apache.camel.model.language.ExpressionDefinition.evaluate(ExpressionDefinition.java:118) > at > org.apache.camel.builder.ExpressionBuilder$34.evaluate(ExpressionBuilder.java:852) > at > org.apache.camel.support.ExpressionAdapter.evaluate(ExpressionAdapter.java:36) > at > org.apache.camel.component.sql.DefaultSqlPrepareStatementStrategy.lookupParameter(DefaultSqlPrepareStatementStrategy.java:200) > at > org.apache.camel.component.sql.DefaultSqlPrepareStatementStrategy$PopulateIterator.next(DefaultSqlPrepareStatementStrategy.java:267) > at > org.apache.camel.component.sql.DefaultSqlPrepareStatementStrategy.populateStatement(DefaultSqlPrepareStatementStrategy.java:129) > at > org.apache.camel.component.sql.DefaultSqlProcessingStrategy$1.doInPreparedStatement(DefaultSqlProcessingStrategy.java:52) > at > org.apache.camel.component.sql.DefaultSqlProcessingStrategy$1.doInPreparedStatement(DefaultSqlProcessingStrategy.java:46) > at > org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:629) > at > org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:658) > at > org.apache.camel.component.sql.DefaultSqlProcessingStrategy.commit(DefaultSqlProcessingStrategy.java:46) > at > org.apache.camel.component.sql.SqlConsumer.processBatch(SqlConsumer.java:240) > at > org.apache.camel.component.sql.SqlConsumer$1.doInPreparedStatement(SqlConsumer.java:137) > at > org.apache.camel.component.sql.SqlConsumer$1.doInPreparedStatement(SqlConsumer.java:110) > at > org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:629) > at > org.springframework.jdbc.core.JdbcTemplate.execute(JdbcTemplate.java:658) > at > org.apache.camel.component.sql.SqlConsumer.poll(SqlConsumer.java:149) > at > org.apache.camel.impl.ScheduledPollConsumer.doRun(ScheduledPollConsumer.java:175) > at > org.apache.camel.impl.ScheduledPollConsumer.run(ScheduledPollConsumer.java:102) > at > java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) > at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:304) > at > java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:178) > at > java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) > at > java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) > at > java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) > at java.lang.Thread.run(Thread.java:744) > Caused by: org.apache.camel.component.bean.MethodNotFoundException: Method > with name: getVrowid() not found on bean: testField1|textField2| > of type: java.lang.String. Exchange[] > at > org.apache.camel.component.bean.BeanInfo.createInvocation(BeanInfo.java:271) > at > org.apache.camel.component.bean.BeanInfo.createInvocation(BeanInfo.java:185) > at > org.apache.camel.component.bean.BeanProcessor.process(BeanProcessor.java:159) > at > org.apache.camel.util.AsyncProcessorHelper.process(AsyncProcessorHelper.java:109) > at > org.apache.camel.component.bean.BeanProcessor.process(BeanProcessor.java:68) > at > org.apache.camel.language.bean.BeanExpression$InvokeProcessor.process(BeanExpression.java:211) > at > org.apache.camel.language.bean.BeanExpression$OgnlInvokeProcessor.process(BeanExpression.java:317) > > > > -- > View this message in context: > http://camel.465427.n5.nabble.com/DefaultSqlPrepareStatementStrategy-lookupParameter-when-onConsume-used-in-SQL-component-tp5780437p5780645.html > Sent from the Camel - Users mailing list archive at Nabble.com. -- Claus Ibsen ----------------- http://davsclaus.com @davsclaus Camel in Action 2: https://www.manning.com/ibsen2