Charles you do post your problems to soon. The NPE is of course because ConsumerTemplate is never initialized.
Just add @EndpointInject to it as well @EndpointInject private ConsumerTemplate consumer; On Mon, Sep 21, 2009 at 3:06 PM, Charles Moulliard <[email protected]> wrote: > There is something strange. I receive a NPE exception at the line > where I create an exchange from consumer : > > �...@endpointinject(name = "queueReportingEndpoint") > private Endpoint endpoint; > > private ConsumerTemplate consumer; > > public List<Map<String, Object>> collectMessages() { > > Log.info("Endpoint : " + endpoint.getEndpointUri()); > > Exchange exch = consumer.receive(endpoint); > > If I call directly consumer.receiveBody(endpoint, List.class); I have > the same error. I tough that the problem come from the endpoint > injection, but I have also a NPE if I use the uri of the endpoint in > the receiveBody method > > Here is the trace : > > Time=Mon Sep 21 15:00:00 CEST 2009, calendar=null, > previousFireTime=Mon Sep 21 14:58:00 CEST 2009, > CamelBeanMethodName=null}, BodyType:org.quartz.JobDetail, > Body:JobDetail > 'DEFAULT.quartz://x3sReporting/clientError?cron=0+0%2F2+9-18+%3F+*+MON-FRI': > jobClass: 'org.apache.camel.component.quartz.CamelJob isStateful: > false isVolatile: false isDurable: false requestsRecovers: false > 15:00:00,000 | INFO | heduler_Worker-2 | x3s > | rg.apache.camel.processor.Logger 88 | Exchange[ > , BodyType:org.quartz.JobDetail > , Body:JobDetail > 'DEFAULT.quartz://x3sReporting/clientError?cron=0+0%2F2+9-18+%3F+*+MON-FRI': > jobClass: 'org.apache.camel.component.quartz.CamelJob isStateful: > false isVolatile: false isDurable: false requestsRecovers: false > , CaughtExceptionType:java.lang.NullPointerException, > CaughtExceptionMessage:null, StackTrace:java.lang.NullPointerException > at > com.xpectis.x3s.core.util.ReportingConsumer.collectMessages(ReportingConsumer.java:27) > > > Charles Moulliard > Senior Enterprise Architect > Apache Camel Committer > > ***************************** > blog : http://cmoulliard.blogspot.com > > > > On Mon, Sep 21, 2009 at 2:12 PM, Claus Ibsen <[email protected]> wrote: >> On Mon, Sep 21, 2009 at 2:05 PM, Charles Moulliard <[email protected]> >> wrote: >>> @EndpointInject(uri="") only accepts as parameter an uri / name or >>> context but not a reference to a spring bean >>> >> >> Its the name attribute that is the ref, maybe we should rename it :) >> >> >> >>> Charles Moulliard >>> Senior Enterprise Architect >>> Apache Camel Committer >>> >>> ***************************** >>> blog : http://cmoulliard.blogspot.com >>> >>> >>> >>> On Mon, Sep 21, 2009 at 1:59 PM, Claus Ibsen <[email protected]> wrote: >>>> On Mon, Sep 21, 2009 at 1:55 PM, Charles Moulliard <[email protected]> >>>> wrote: >>>>> Sorry for my mistake. >>>>> >>>>> I have used @consume because it was possible to pass as a parameter >>>>> the name of the endpoint to consume. Is there a way to do this with a >>>>> consumer template ? >>>>> >>>> >>>> You can IoC the endpoint in the bean >>>> >>>> @EndpointInjected(ref = "foo") >>>> private Endpoint foo; >>>> >>>> but I would assume consumer template also works like producer template >>>> with IoC >>>> ( if not we should add it) >>>> >>>> @EndpointInjected(ref = "foo") >>>> private ConsumerTemplate consumer; >>>> >>>> >>>> See more >>>> http://camel.apache.org/bean-injection.html >>>> >>>>> regards, >>>>> >>>>> Charles Moulliard >>>>> Senior Enterprise Architect >>>>> Apache Camel Committer >>>>> >>>>> ***************************** >>>>> blog : http://cmoulliard.blogspot.com >>>>> >>>>> >>>>> >>>>> On Mon, Sep 21, 2009 at 1:50 PM, Claus Ibsen <[email protected]> >>>>> wrote: >>>>>> On Mon, Sep 21, 2009 at 1:46 PM, Charles Moulliard >>>>>> <[email protected]> wrote: >>>>>>> The POJO defined in the following route consumes immediately messages >>>>>>> posted on a queue and in consequence is not triggered by the Quartz >>>>>>> timer >>>>>>> >>>>>>> <camel:from >>>>>>> uri="quartz://x3sReporting/clientError?cron=0+0/5+9-18+?+*+MON-FRI"/> >>>>>>> <camel:doTry> >>>>>>> <camel:bean ref="reportingConsumer" >>>>>>> method="collectMessages"/> >>>>>>> ... >>>>>>> >>>>>>> public class ReportingConsumer { >>>>>>> >>>>>>> �...@consume(ref = "queueReportingEndpoint") // = x3s:report queue >>>>>>> public List<Map<String, Object>> collectMessages(List<Map<String, >>>>>>> Object>> received) { >>>>>>> >>>>>>> List<Map<String, Object>> result = new ArrayList<Map<String, >>>>>>> Object>>(); >>>>>>> >>>>>>> if (received != null) { >>>>>>> >>>>>>> Log.info("Received exchange : " + >>>>>>> received.size()); >>>>>>> for(Map<String, Object> model : received) { >>>>>>> >>>>>>> Log.info("Map received : " + >>>>>>> model.toString()); >>>>>>> // Add model received into the result >>>>>>> output list >>>>>>> result.add( model ); >>>>>>> } >>>>>>> } >>>>>>> >>>>>>> return result; >>>>>>> } >>>>>>> >>>>>>> Question : How can I avoid that the bean consumes immediately messages >>>>>>> from the queue and wait quartz triggering ? >>>>>> >>>>>> You cannot as @Consume(ref = "queueReportingEndpoint") has ABSOLUTELY >>>>>> nothing to do with quartz. >>>>>> It creates a new event driven consumer which listen on new messages >>>>>> arriving on that JMS queue. >>>>>> >>>>>> You can remove the @Consume and then let quartz invoke it from the Camel >>>>>> route. >>>>>> >>>>>> And then you can in your bean use a consumer template to read messages >>>>>> from the JMS queue. >>>>>> Now you bean is only invoked when quartz triggers. >>>>>> >>>>>> >>>>>> >>>>>> >>>>>>> >>>>>>> Charles Moulliard >>>>>>> Senior Enterprise Architect >>>>>>> Apache Camel Committer >>>>>>> >>>>>>> ***************************** >>>>>>> blog : http://cmoulliard.blogspot.com >>>>>>> >>>>>> >>>>>> >>>>>> >>>>>> -- >>>>>> Claus Ibsen >>>>>> Apache Camel Committer >>>>>> >>>>>> Open Source Integration: http://fusesource.com >>>>>> Blog: http://davsclaus.blogspot.com/ >>>>>> Twitter: http://twitter.com/davsclaus >>>>>> >>>>> >>>> >>>> >>>> >>>> -- >>>> Claus Ibsen >>>> Apache Camel Committer >>>> >>>> Open Source Integration: http://fusesource.com >>>> Blog: http://davsclaus.blogspot.com/ >>>> Twitter: http://twitter.com/davsclaus >>>> >>> >> >> >> >> -- >> Claus Ibsen >> Apache Camel Committer >> >> Open Source Integration: http://fusesource.com >> Blog: http://davsclaus.blogspot.com/ >> Twitter: http://twitter.com/davsclaus >> > -- Claus Ibsen Apache Camel Committer Open Source Integration: http://fusesource.com Blog: http://davsclaus.blogspot.com/ Twitter: http://twitter.com/davsclaus
