camel-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Carlus Henry" <carlushe...@sagetech-llc.com>
Subject Re: Configure Route in Spring Context
Date Thu, 11 Dec 2008 17:24:34 GMT
I think that the dynamic approach still allows you to do what you are
explaining.  Here is my example:

    <bean id="camel"
class="org.apache.camel.spring.CamelContextFactoryBean"/>

    <bean id="tibco" class="org.apache.camel.component.jms.JmsComponent">
        <property name="connectionFactory" ref="jmsQueueConnectionFactory"/>
        <property name="transacted" ref="true"/>
        <property name="transactionManager" ref="transactionManager"/>
    </bean>

    <bean id="incrementRetry"
class="com.acme.integration.process.IncrementRetryField"/>

    <bean id="retryLogicRoute"
class="com.acme.integration.routes.RetryLogicRoute">
        <property name="mainQueueName"
value="tibco:$acme{jms.queue.name.consume}"/>
        <property name="retryQueueName"
value="tibco:$acme{jms.queue.name.publish}"/>
        <property name="errorQueueName"
value="tibco:$acme{jms.queue.name.error}"/>
        <property name="enableTracer" value="$acme{enable.route.tracing}"/>
    </bean>

This builds the route as a spring bean first, with the associated properties
for configuration purposes....but still will be dynamically added to the
camel context.




On Thu, Dec 11, 2008 at 12:17 PM, Adrian Trenaman <trenaman@progress.com>wrote:

> Heya,
>
> Actually, I prefer to create my routes explicitly in the spring file and
> then use routeBuilderRef. This allows me to inject configuration values into
> the route before the configure() method is called. If you use the more
> dynamic package approach then the routes are created using a default
> constructor so you can't configure em'! Unless some can think of a neat way
> to do it that I've missed?
>
> /Ade
>
>
> On 11 Dec 2008, at 17:44, Carlus Henry wrote:
>
>  Hey...
>>
>> I had a similar requirement, and I discovered that you don't even have to
>> specify the routeBuilder as a reference point.  In other words, by the
>> mere
>> fact that you defined an object that is a RouteBuilder in your spring
>> file,
>> it will automagically be added as a valid route within the Camel Context.
>>
>> I thought that this was a pretty nifty feature.
>>
>> Later.
>>
>> On Wed, Dec 10, 2008 at 9:52 PM, Willem Jiang <willem.jiang@gmail.com
>> >wrote:
>>
>>  Hi Doug
>>>
>>> Thanks for pointing out the issue.
>>> I just update the wiki page[1] for it .
>>>
>>> [1] http://cwiki.apache.org/confluence/display/CAMEL/Spring
>>>
>>> Willem
>>>
>>>
>>> dougly wrote:
>>>
>>>> Hi William,
>>>> Thanks for creating the JIRA.
>>>> But I just looked at the xsd schema for camel context and discovered
>>>> that
>>>> camelContext can take a reference to the route builder bean! I did
>>>> follow
>>>> that and it works fine. Here's how:
>>>>
>>>> <camelContext id='' xmlns="..">
>>>>  <routeBuilderRef ref="myBuilder" />
>>>> </camelContext>
>>>>
>>>> <bean id="myBuilder" class="..."></bean>
>>>>
>>>> I will update the JIRA with this info.
>>>>
>>>> Thanks and regards,
>>>>
>>>> Doug
>>>>
>>>>
>>>> willem.jiang wrote:
>>>>
>>>>> It's an interesting requirement.
>>>>> Basically camel will search <package> to lookup the builder class
and
>>>>> instantiate it, and you build up a MailRouteBuilder yourself in Spring
>>>>> configuration by injecting some properties.
>>>>>
>>>>> I think we could add new feature to let <camelContext> consumer
the
>>>>> builder instance at same time.
>>>>>
>>>>> Here is the JIRA[1] that I just created according to your request.
>>>>>
>>>>> [1]https://issues.apache.org/activemq/browse/CAMEL-1179
>>>>>
>>>>> Willem
>>>>>
>>>>> dougly wrote:
>>>>>
>>>>>> Hi riders,
>>>>>>
>>>>>> I have a couple of properties in my RouteBuilder class that needed
to
>>>>>>
>>>>> be
>>>
>>>> initialized using Spring application context file.
>>>>>>
>>>>>> public class MailRouteBuilder extends RouteBuilder
>>>>>> {
>>>>>>
>>>>>>   private static MailConfigure mailConfig;
>>>>>>   private static IEmailMessageProcessor messageProcessor;
>>>>>> ...
>>>>>> }
>>>>>>
>>>>>> then in my Spring context file I have this
>>>>>>
>>>>>> <camelContext xmlns="http://activemq.apache.org/camel/schema/spring">
>>>>>>   <package>com.lyfam.component.mail</package>
>>>>>>  </camelContext>
>>>>>>
>>>>>>  <bean id="mailRoute"
>>>>>>
>>>>> class="com.lyfam.component.mail.MailRouteBuilder">
>>>
>>>>   <property name="mailConfig" ref="mailConfigure" />
>>>>>>   <property name="messageProcessor" ref="messageProcessor" />
>>>>>>  </bean>
>>>>>>
>>>>>> Spring will try to create 2 instances of this MailRouteBuilder: one
in
>>>>>> the
>>>>>> camel context initialization and the other for the bean "mailRoute".
>>>>>> Obviously, this is not what I want.
>>>>>> Can I reuse/instruct camelContext to use the existing bean after
it is
>>>>>> configured. In this case I need the camel context to use my
>>>>>> "mailRoute"
>>>>>> bean.
>>>>>>
>>>>>> Thank you guys,
>>>>>> Doug
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>
>>> Carlus Henry
>>>
>>
> ---
> Adrian Trenaman, Consultant Fellow, PS - Opensource Center of Competence
> Progress Software Corp
> Shelbourne Road, Dublin 4, Ireland
> ---
> +353-1-637-2659 (Office)
> +353-1-637-2882 (Fax)
> +353-86-6051026 (Mobile)
>  adrian.trenaman (Skype)
> ----
> Blog: http://trenaman.blogspot.com
>
>
>
>
>
>
>
>
>


-- 
Carlus Henry

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message