[ 
https://issues.apache.org/jira/browse/CAMEL-3285?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12976554#action_12976554
 ] 

Ashwin Karpe edited comment on CAMEL-3285 at 1/2/11 1:56 PM:
-------------------------------------------------------------

Hi Kristof,

If I understand your requirement correctly, there are major issues with doing 
it the way you have described, the key ones among them I have described below.

    a> Something like the URI (book://addToCatalog) described already exists in 
Camel in the bean component.
                 bean:book?method=addToCatalog
    b> The use of "routebox:" is primarily used to indicate a URI scheme that 
clearly indicates that the URI indirects to a collection of underlying routes 
which are encapsulated/housed in a inner camel context. The book://addToCatalog 
is not reflective of that since it becomes single indirection based endpoint 
and therefore book://findBook becomes another single indirection endpoint to a 
single inner route/method housed in its own inner context.
          At this point the mapping of camel context <--> route becomes 1:1 
which is way too expensive and narrow/limited in terms of utilizing camel 
capabilities.
    c> The URI for book:addToCatalog has the potential to cause a lot of 
confusion since book is an application entity and not a camel offered protocol 
or URI scheme. Camel provides generic component(s) that facilitate via URIs an 
ability for the integration architect to wire any application entities of his 
choice. 
    d>The routebox URI accurately follows standard conventions for URI design. 
If there is something I am missing in terms of intuitiveness, but addressing 
the points  listed above, I would be happy to address them.  

Hope this clarifies my design choices. 

There is however a valid question as to how a client would know of what payload 
to send and what header to set, which I am planning to address in the next 
update using a Query extensor (routebox:myroutes:query?...)  and/or a set of 
routebox processors that can provide these details with a bunch of helper 
interfaces and abstract classes, which can again be implemented by users to 
achieve what they want.

Hope this helps.

Cheers,

Ashwin...

 
                

      was (Author: akarpe):
    Hi Kristof,

If I understand your requirement correctly, there are major issues with doing 
it the way you have described, the key ones among them I have described below.

    a> Something like the URI (book://addToCatalog) described already exists in 
Camel in the bean component.
                 bean:book?method=addToCatalog
    b> The use of "routebox:" is primarily used to indicate a URI scheme that 
clearly indicates that the URI indirects to a collection of underlying routes 
which are encapsulated/housed in a inner camel context. The book://addToCatalog 
is not reflective of that since it becomes single indirection based endpoint 
and therefore book://findBook becomes another single indirection endpoint at an 
individual route/method each route with its own inner context.
          At this point the mapping of camel context <--> route becomes 1:1 
which is way too expensive, narrow and limited in terms of utilizing camel 
capabilities.
    c> The URI for book:addToCatalog has the potential to cause a lot of 
confusion since book is an application entity and not a camel offered protocol 
or URI scheme. Camel provides generic component(s) that facilitate via URIs an 
ability for the integration architect to wire any application entities of his 
choice. 
    d>The routebox URI accurately follows standard conventions for URI design. 
If there is something I am missing in terms of intuitiveness, but addressing 
the points  listed above, I would be happy to address them.  

Hope this clarifies my design choices. 

There is however a valid question as to how a client would know of what payload 
to send and what header to set, which I am planning to address in the next 
update using a Query extensor (routebox:myroutes:query?...)  and/or a set of 
routebox processors that can provide these details with a bunch of helper 
interfaces and abstract classes, which can again be implemented by users to 
achieve what they want.

Hope this helps.

Cheers,

Ashwin...

 
                
  
> Create a new blackbox component which can encapsulate routes using a 
> specialized ProtocolBuilder endpoint (similar to RouteBuilder)
> -----------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: CAMEL-3285
>                 URL: https://issues.apache.org/jira/browse/CAMEL-3285
>             Project: Camel
>          Issue Type: New Feature
>            Reporter: Ashwin Karpe
>            Assignee: Ashwin Karpe
>             Fix For: 2.6.0
>
>         Attachments: camel-routebox-20101220.zip, routebox.diff
>
>
> Given below is the discussion forum thread that spawned this thought.
> http://camel.465427.n5.nabble.com/Abstracting-Routes-using-Components-td3234703.html#a3234703
> Component requirements:
>  Need a Camel component (called Backbox, maybe) that can nicely expose a 
> ProtocolBuilder endpoint that does the following
>     a> Instantiate route definitions/route(s) configured in Spring or DSL at 
> startup
>     b> Launch a Producer or Consumer with a well known protocol(s) so that a 
> client can invoke it (could be direct or seda initially but could be any 
> protocol... really) . Must support multiple consumer endpoints and routes 
> using a URI scheme.
>     c> redirect received payloads (with marshalling into an exchange if 
> necessary) to the inner route(s) since they are launched and started. If 
> there are multiple inner routes with many consumers, we could expect the user 
> to provide a clue using the payload and/or an exchange property as to how the 
> payload should be routed.
>     d> Extend from a Default Consumer, Producer, Endpoint and Component.
>     e> Internally manage inner route lifecycles and operations. 

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to