In my workplace's production Camel environment, we utilize 3 master-slave
pairs running Camel version 2.9.2. Producers and Consumers reference these
servers by hardcoded hostname in

consumer-camel-context.xml and producer-camel-context.xml. An example the
latter might be:


<property name="brokerURL" value="failover:(tcp://
camel01.domain.net:61616?keepAlive=true&amp;connectionTimeout=200,tcp://camel02.domain.net:61616?keepAlive=true&amp;connectionTimeout=200,tcp://camel03.domain.net:61616?keepAlive=true&amp;connectionTimeout=200,tcp://camel04.domain.net:61616
?

keepAlive=true&amp;connectionTimeout=200,tcp://
camel05.domain.net:61616?keepAlive=true&amp;connectionTimeout=200,tcp://camel06.domain.net:61616?keepAlive=true&amp;connectionTimeout=200)?startupMaxReconnectAttempts=1&amp;timeout=-1
"/>

We run into issues with the above when we migrate to new hardware and
change the server names. This requires not only a change to the XML files
(maintained in puppet), but also a deployment of the producing and
consuming applications to pick up the updated configuration. What we'd like
to do instead is to virtualize the connection behind either an F5 load
balancer or a Virtual IP address. Ideally it would look something like this:

<property name="brokerURL" value="failover:(tcp://camelVIP.domain.net
:61616?keepAlive=true&amp;connectionTimeout=200)?startupMaxReconnectAttempts=1&amp;timeout=-1"/>

...or something like that. Is a scheme like this even possible given the
built-in clustering and load balancing in Camel?

Thanks in advance.

-- 
*Paul David Mena*
Senior Software Engineer
Engineering Services

Reply via email to