Class 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 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

      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 balancer
      void setNumberOfHashGroups​(int numberOfHashGroups)  
      • 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 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 Detail

      • StickyLoadBalancer

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

      • 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