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
