On Mar 1, 2011, at 1:39 AM, James Strachan wrote:

> On 11 February 2011 09:50, James Strachan <ja...@fusesource.com> wrote:
>> On 10 February 2011 20:13, Ashwin Karpe <aka...@fusesource.com> wrote:
>>> 
>>> Hi James,
>>> 
>>> I like the approach. It certainly replaces the need to have a Strategy and
>>> eliminates the need to inject a context into a component.
>> 
>> Thanks!
>> 
>> Am sure there's uses for the RouteBox approach when folks want to do
>> different things; though my gut feel was just to use regular Camel
>> endpoints as the 'API' to the black boxed components; then you can use
>> the regular Camel routing engine as the 'strategy' for consuming from
>> those endpoints and doing Content Based Routing or whatever.
>> 
>> 
>>> If everyone agrees, I will be happy to develop this capability along these
>>> lines and open it up for review and comment.
>> 
>> Great stuff thanks! BTW before I sent the previous email I'd checked
>> in an implementation and a number of test cases to check it worked;
>> using concise or verbose URIs using the Java DSL. Though we need more
>> testing of using this concept more with Spring; we might have a few
>> gremlins when working with multiple contexts and using some of the
>> injection & annotation features; which up to now have tended to assume
>> only a single CamelContext etc.
> 
> FWIW I've just committed a test case showing this working in Spring
> XML now. See SpringDslContextComponentTest in camel-context.
> 
> There was a lifecycle issue with CamelBeanPostProcessor which was
> eagerly resolving references to CamelContext - causing the
> CamelContext to be started eagerly which if you use multiple
> CamelContexts in a single XML file was causing lifecycle issues (and
> breaking the behaviour of depends-on) - which has now been made lazy
> to avoid this issue.
> 
> Here's the test case:
> https://github.com/apache/camel/blob/trunk/components/camel-context/src/test/java/org/apache/camel/component/context/SpringDslContextComponentTest.java
> 
> notice how we inject the MockEndpoint and the ProducerTemplate from
> the 'tester' CamelContext.
> 
> Then here's the Spring XML; we route from tester's direct:start to the
> accounts CamelContext and consume from the output on the accounts
> direct:invoice endpoint.
> 
> https://github.com/apache/camel/blob/trunk/components/camel-context/src/test/resources/org/apache/camel/component/context/SpringDslContextComponentTest-context.xml
> 
> -- 
> James
> -------
> FuseSource
> Email: ja...@fusesource.com
> Web: http://fusesource.com
> Twitter: jstrachan
> Blog: http://macstrac.blogspot.com/
> 
> Open Source Integration


All,

First off, this is exactly what I was hoping for.  Kudos to all.

To bring this back around to the original suggestion, there was concern over 
the CamelContext being too heavy.  

{Claus Isben: Re: Abstracting Routes using Components: Oct 27th, 2010}

…

Having a nested CamelContext, we would maybe have to strip it down
from some features to keep it lighter (loading type converters, JMX
management, event notification, OSGi complexity, lifecycle etc.).

...

I am assuming there is still a potential issue here or maybe not.  If there is 
concern, is it something that will be addressed in the future and/or is there 
guidance on how to 'slim' down a nested CamelContext?


Scott England-Sullivan
twitter: sully6768
sully6...@yahoo.com
H. 952.440.4568
C. 217.390.3058


Reply via email to