camel-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Nathan Jones <nat...@ncjones.com>
Subject Patterns for DRY Camel endpoints
Date Wed, 04 Feb 2015 09:55:17 GMT
Is there a standard pattern for defining Camel endpoints so that
commonly used endpoint settings do not need to be repeated in every
endpoint definition? For example, every RabbitMQ endpoint I declare
always repeats the same connection settings like the following:

     rabbitmq://{{rabbitmq.host}}:{{rabbitmq.port}}/exchange?username=...

I'm thinking of having an (immutable) endpoint URL builder that can be
reused by all route builders. Then I would only need to set the common
connection settings once (say, in my Spring configuration):

     @Bean
     UrlBuilder rmqEndpointUrlBuilder() {
         return new UrlBuilder()
             .setScheme("rabbitmq")
             .setHost("{{rabbitmq.host}}")
             .setPort("{{rabbitmq.port}}");
     }


That URL builder would be injected into my Camel route builder and can
be used like so:

     from(rmqEndpointUrlBuilder.setPath("/exchange").toString())

Does this sound reasonable? Is there a simpler way to achieve this?

Taking the endpoint builder idea further may be interesting. If there
were endpoint builders specific to each component type then it would be
a lot easier to define endpoint URL parameters. Has this sort of thing
been considered before?

  - Nathan

Mime
View raw message