Class StickyLoadBalancer

java.lang.Object
org.apache.camel.support.service.BaseService
org.apache.camel.support.service.ServiceSupport
org.apache.camel.support.AsyncProcessorSupport
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 an Expression to calculate a correlation key to perform the sticky load balancing; rather like jsessionid in the web or JMSXGroupID in JMS.
  • Field Summary

    Fields inherited from class org.apache.camel.support.service.BaseService

    BUILT, FAILED, INITIALIZED, INITIALIZING, lock, NEW, SHUTDOWN, SHUTTING_DOWN, STARTED, STARTING, status, STOPPED, STOPPING, SUSPENDED, SUSPENDING
  • Constructor Summary

    Constructors
    Constructor
    Description
    StickyLoadBalancer(org.apache.camel.Expression correlationExpression)
     
  • Method Summary

    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
     
    int
     
    int
     
    protected Object
    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 balancer
    void
    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.AsyncProcessorSupport

    process, processAsync

    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

    Methods inherited from interface org.apache.camel.AsyncProcessor

    processAsync

    Methods inherited from interface org.apache.camel.spi.IdAware

    setGeneratedId

    Methods inherited from interface org.apache.camel.Processor

    process

    Methods inherited from interface org.apache.camel.Service

    build, close, init, start, stop

    Methods inherited from interface org.apache.camel.ShutdownableService

    shutdown

    Methods inherited from interface org.apache.camel.StatefulService

    getStatus, isRunAllowed, isStarted, isStarting, isStopped, isStopping, isSuspending

    Methods inherited from interface org.apache.camel.SuspendableService

    isSuspended, resume, suspend
  • Constructor Details

    • StickyLoadBalancer

      public StickyLoadBalancer(org.apache.camel.Expression correlationExpression)
  • Method Details

    • chooseProcessor

      protected org.apache.camel.AsyncProcessor chooseProcessor(org.apache.camel.AsyncProcessor[] processors, org.apache.camel.Exchange exchange)
      Specified by:
      chooseProcessor in class QueueLoadBalancer
    • 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 interface LoadBalancer
      Overrides:
      removeProcessor in class LoadBalancerSupport
      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