Load Balancer has been edited by Claus Ibsen (May 14, 2009).

(View changes)

Content:

Load Balancer

The Load Balancer Pattern allows you to delegate to one of a number of endpoints using a variety of different load balancing policies.

Using the Fluent Builders

from("direct:start").loadBalance().
roundRobin().to("mock:x", "mock:y", "mock:z");

Using the Spring configuration

<bean id = "roundRobinRef" class="org.apache.camel.processor.loadbalancer.RoundRobinLoadBalancer" />
  <camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
    <route>
      <from uri="direct:start"/>
      <loadBalance ref="roundRobinRef">
          <to uri="mock:x"/>        
          <to uri="mock:y"/>       
          <to uri="mock:z"/>          
      </loadBalance>
    </route>
  </camelContext>

or

<camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
  <route>
    <from uri="direct:start"/>
    <loadBalance>        
        <roundRobin/>  <!-- This only support for Camel 1.5 -->
        <to uri="mock:x"/>        
        <to uri="mock:y"/>       
        <to uri="mock:z"/>                 
    </loadBalance>
  </route>
</camelContext>

So the above example will load balance requests from direct:start to one of the available mock endpoint instances, in this case using a round robbin policy.
For further examples of this pattern in use you could look at the junit test case

Build in load balancing policies

Camel has out of the box the following policies:

Policy Description
Round Robin The exchanges is selected in a round robin fashion. This is a well known and classic policy. This spreads the load even.
Random A random endpoint is selected for each exchange
Sticky Sticky load balancing using an _expression_ to calculate a correlation key to perform the sticky load balancing; rather like jsessionid in the web or JMSXGroupID in JMS.
Topic Topic which sends to all destinations (rather like JMS Topics)
Failover Camel 2.0: In case of failures the exchange is tried on the next endpoint.

Using This Pattern

If you would like to use this EIP Pattern then please read the Getting Started, you may also find the Architecture useful particularly the description of Endpoint and URIs. Then you could try out some of the Examples first before trying this pattern out.

Reply via email to