@EndpointInject(uri="") only accepts as parameter an uri / name or context but not a reference to a spring bean
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 >
