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

Ari Mando commented on CAMEL-5466:
----------------------------------

Yes, several large customers I have consulted for have insisted on XML routes, 
not necessarily ideal, but their teams implementing these routes have very 
little Java experience, think middleware admin teams, they're not developers. 
Fuse IDE doesn't support java routes, blar blar blar. :)

Additionally, your solution doesn't necessarily address internalization of 
redundant information (most of the URI for example) and externalization of 
configurable endpoint data (ie 100's of queuenames) in it's current form. 
Obviously, your snippet could me made to have these features. But your solution 
is neat and I think I'll use that for Java solutions too in the future. But I 
still see a functional difference. No big deal.  

I've just worked on a new system which would theoretically require 1000's of 
xml routes very soon, identical except the consumer queue name. Consider having 
to turn on a new store queue for corporate chain that has 1000's of stores. How 
does that work in your approach? You could implement externalized values in 
your java solution (from a properties file) but you have to list the full URI 
for each route? When I've done this approach in the past I've always had 
property files with lots of url's which have a lot of identical endpoint 
configuration information, maintenance nightmare.

In the current demo code you can turn on a jms consumer route by just updating 
a properties file, it currently requires a route restart. Easy for admins. If 
source list could be sourced from another camel endpoint, even better. I'm 
planning to update the virtual component to dynamically reconfigure it's 
template source, hopefully I get some time soon and look at extending the XML 
DSL as I described originally. 

I debated in my head whether this was virtual routing or template route, names, 
names names. But thinking this through just now I've realized the approach I've 
demonstrated uses a XML virtual notation around the route, but a templating 
mechanism to the endpoint URI's. 


                
> new virtual endpoint component
> ------------------------------
>
>                 Key: CAMEL-5466
>                 URL: https://issues.apache.org/jira/browse/CAMEL-5466
>             Project: Camel
>          Issue Type: Improvement
>    Affects Versions: 2.9.2
>            Reporter: Ari Mando
>             Fix For: 2.9.3
>
>         Attachments: camel-virtual.tar.gz
>
>
> I had the recurring need for a virtual endpoint in camel routes. Often I need 
> to define the same route, but just with different endpoint locations, 
> typically queues.
> The supplied component allows for:
>     <route>
>         <from uri="virtual://source-queue?real=amq://@?"/>
>         <to uri="virtual://destination-queue?real=amq2://@?"/>
>     </route>
> Then in a virtual.properties file:
> *source-queue,destination-queue
> queue1,queue4
> queue2,queue5
> queue3,queue6
> The above properties file would be like adding 3 routes. 
> The supplied impl is a bit rough, it needs some more work. The first cut was 
> sufficient for the usecase I needed it for.
> I already thought it should be really like:
> <virtual id="test" uri="file://queues.xml">
>     <route>
>         <from uri="virtual://source-queue?real=amq://@?"/>
>         <to uri="virtual://destination-queue?real=amq2://@?"/>
>     </route>
> </virtual>
> then an xml file:
> <endpointValues>
>     <header>
>         <value>source-queue</value>
>         <value>destination-queue</value>
>     </headers>
>     <entry>
>         <value>queue1,queue4</value>
>         <value>queue5,queue6</value>
>     </entry>
> </endpointValues> 
> Using the DSL would allow multiple virtual routes with different config being 
> pulled from other camel endpoints. 
> Dynamic routing! Call it virtual routing or template routing.
> Tasks to be finished on it:
> * implement threading (concurrentConsumers)
> * move to high level dsl model
> * unit tests
> * source configuration from enrichment uri call
> * more robust error handling

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to