@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
>

Reply via email to