Ah, I get you now - i misread something in your original email. Very nice feature indeed. So, no need for routeBuilderRef or package elements in the camel context: just declare your bean and away you go. Very nice!

/Ade

On 11 Dec 2008, at 18:24, Carlus Henry wrote:

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 <[email protected] >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 <[email protected]
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

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








Reply via email to