Class StickyLoadBalancer
- java.lang.Object
-
- org.apache.camel.support.service.BaseService
-
- org.apache.camel.support.service.ServiceSupport
-
- org.apache.camel.support.AsyncProcessorSupport
-
- org.apache.camel.processor.loadbalancer.LoadBalancerSupport
-
- org.apache.camel.processor.loadbalancer.QueueLoadBalancer
-
- org.apache.camel.processor.loadbalancer.StickyLoadBalancer
-
- All Implemented Interfaces:
AutoCloseable
,org.apache.camel.AsyncProcessor
,org.apache.camel.Navigate<org.apache.camel.Processor>
,org.apache.camel.Processor
,LoadBalancer
,org.apache.camel.Service
,org.apache.camel.ShutdownableService
,org.apache.camel.spi.HasId
,org.apache.camel.spi.IdAware
,org.apache.camel.spi.RouteIdAware
,org.apache.camel.StatefulService
,org.apache.camel.SuspendableService
public class StickyLoadBalancer extends QueueLoadBalancer
Implements a sticky load balancer using anExpression
to calculate a correlation key to perform the sticky load balancing; rather like jsessionid in the web or JMSXGroupID in JMS.
-
-
Constructor Summary
Constructors Constructor Description StickyLoadBalancer(org.apache.camel.Expression correlationExpression)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected org.apache.camel.AsyncProcessor
chooseProcessor(org.apache.camel.AsyncProcessor[] processors, org.apache.camel.Exchange exchange)
org.apache.camel.Expression
getCorrelationExpression()
int
getLastChosenProcessorIndex()
int
getNumberOfHashGroups()
protected Object
getStickyKey(Object value)
A strategy to create the key for the sticky load balancing map.void
removeProcessor(org.apache.camel.AsyncProcessor processor)
Removes the given processor from the load balancervoid
setNumberOfHashGroups(int numberOfHashGroups)
-
Methods inherited from class org.apache.camel.processor.loadbalancer.QueueLoadBalancer
process
-
Methods inherited from class org.apache.camel.processor.loadbalancer.LoadBalancerSupport
addProcessor, doGetProcessors, doInit, doShutdown, doStart, doStop, getId, getProcessors, getRouteId, hasNext, next, setId, setRouteId, toString
-
Methods inherited from class org.apache.camel.support.service.BaseService
build, doBuild, doFail, doLifecycleChange, doResume, doSuspend, fail, getStatus, init, isBuild, isInit, isNew, isRunAllowed, isShutdown, isStarted, isStarting, isStartingOrStarted, isStopped, isStopping, isStoppingOrStopped, isSuspended, isSuspending, isSuspendingOrSuspended, resume, shutdown, start, stop, suspend
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
-
-
-
Method Detail
-
chooseProcessor
protected org.apache.camel.AsyncProcessor chooseProcessor(org.apache.camel.AsyncProcessor[] processors, org.apache.camel.Exchange exchange)
- Specified by:
chooseProcessor
in classQueueLoadBalancer
-
removeProcessor
public void removeProcessor(org.apache.camel.AsyncProcessor processor)
Description copied from interface:LoadBalancer
Removes the given processor from the load balancer- Specified by:
removeProcessor
in interfaceLoadBalancer
- Overrides:
removeProcessor
in classLoadBalancerSupport
- Parameters:
processor
- the processor to be removed from the load balancer
-
getLastChosenProcessorIndex
public int getLastChosenProcessorIndex()
-
getCorrelationExpression
public org.apache.camel.Expression getCorrelationExpression()
-
getNumberOfHashGroups
public int getNumberOfHashGroups()
-
setNumberOfHashGroups
public void setNumberOfHashGroups(int numberOfHashGroups)
-
getStickyKey
protected Object getStickyKey(Object value)
A strategy to create the key for the sticky load balancing map. The default implementation uses the hash code of the value then modulos by the numberOfHashGroups to avoid the sticky map getting too big- Parameters:
value
- the correlation value- Returns:
- the key to be used in the sticky map
-
-