Class FailOverLoadBalancer

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.FailOverLoadBalancer
All Implemented Interfaces:
AutoCloseable, org.apache.camel.AsyncProcessor, org.apache.camel.CamelContextAware, 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.HasCamelContext, org.apache.camel.spi.HasId, org.apache.camel.spi.IdAware, org.apache.camel.spi.RouteIdAware, org.apache.camel.StatefulService, org.apache.camel.SuspendableService, org.apache.camel.Traceable

public class FailOverLoadBalancer extends LoadBalancerSupport implements org.apache.camel.Traceable, org.apache.camel.CamelContextAware
This FailOverLoadBalancer will failover to use next processor when an exception occurred

This implementation mirrors the logic from the Pipeline in the async variation as the failover load balancer is a specialized pipeline. So the trick is to keep doing the same as the pipeline to ensure it works the same and the async routing engine is flawless.

  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Class
    Description
    protected class 
     
  • 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
     
     
  • Method Summary

    Modifier and Type
    Method
    Description
    protected void
     
    org.apache.camel.CamelContext
     
     
     
    int
     
    int
     
     
    boolean
     
    boolean
     
    boolean
     
    protected org.apache.camel.Exchange
    prepareExchangeForFailover(org.apache.camel.Exchange exchange)
    Prepares the exchange for failover
    boolean
    process(org.apache.camel.Exchange exchange, org.apache.camel.AsyncCallback callback)
     
    void
     
    void
    setCamelContext(org.apache.camel.CamelContext camelContext)
     
    void
    setMaximumFailoverAttempts(int maximumFailoverAttempts)
     
    void
    setRoundRobin(boolean roundRobin)
     
    void
    setSticky(boolean sticky)
     
    protected boolean
    shouldFailOver(org.apache.camel.Exchange exchange)
    Should the given failed Exchange failover?

    Methods inherited from class org.apache.camel.processor.loadbalancer.LoadBalancerSupport

    addProcessor, doGetProcessors, doInit, doShutdown, doStop, getId, getProcessors, getRouteId, hasNext, next, removeProcessor, 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, 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, isStarted, isStarting, isStopped, isStopping, isSuspending

    Methods inherited from interface org.apache.camel.SuspendableService

    isSuspended, resume, suspend
  • Constructor Details

    • FailOverLoadBalancer

      public FailOverLoadBalancer()
    • FailOverLoadBalancer

      public FailOverLoadBalancer(List<Class<?>> exceptions)
  • Method Details

    • getCamelContext

      public org.apache.camel.CamelContext getCamelContext()
      Specified by:
      getCamelContext in interface org.apache.camel.spi.HasCamelContext
    • setCamelContext

      public void setCamelContext(org.apache.camel.CamelContext camelContext)
      Specified by:
      setCamelContext in interface org.apache.camel.CamelContextAware
    • getLastGoodIndex

      public int getLastGoodIndex()
    • getExceptions

      public List<Class<?>> getExceptions()
    • isRoundRobin

      public boolean isRoundRobin()
    • setRoundRobin

      public void setRoundRobin(boolean roundRobin)
    • isSticky

      public boolean isSticky()
    • setSticky

      public void setSticky(boolean sticky)
    • getMaximumFailoverAttempts

      public int getMaximumFailoverAttempts()
    • setMaximumFailoverAttempts

      public void setMaximumFailoverAttempts(int maximumFailoverAttempts)
    • shouldFailOver

      protected boolean shouldFailOver(org.apache.camel.Exchange exchange)
      Should the given failed Exchange failover?
      Parameters:
      exchange - the exchange that failed
      Returns:
      true to failover
    • isRunAllowed

      public boolean isRunAllowed()
      Specified by:
      isRunAllowed in interface org.apache.camel.StatefulService
      Overrides:
      isRunAllowed in class org.apache.camel.support.service.BaseService
    • process

      public boolean process(org.apache.camel.Exchange exchange, org.apache.camel.AsyncCallback callback)
      Specified by:
      process in interface org.apache.camel.AsyncProcessor
    • prepareExchangeForFailover

      protected org.apache.camel.Exchange prepareExchangeForFailover(org.apache.camel.Exchange exchange)
      Prepares the exchange for failover
      Parameters:
      exchange - the exchange
      Returns:
      a copy of the exchange to use for failover
    • getTraceLabel

      public String getTraceLabel()
      Specified by:
      getTraceLabel in interface org.apache.camel.Traceable
    • getExceptionFailureStatistics

      public ExceptionFailureStatistics getExceptionFailureStatistics()
    • reset

      public void reset()
    • doStart

      protected void doStart() throws Exception
      Overrides:
      doStart in class LoadBalancerSupport
      Throws:
      Exception