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 -
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 -
Method Summary
Modifier and TypeMethodDescriptionprotected voiddoStart()org.apache.camel.CamelContextintintbooleanbooleanbooleanisSticky()protected org.apache.camel.ExchangeprepareExchangeForFailover(org.apache.camel.Exchange exchange) Prepares the exchange for failoverbooleanprocess(org.apache.camel.Exchange exchange, org.apache.camel.AsyncCallback callback) voidreset()voidsetCamelContext(org.apache.camel.CamelContext camelContext) voidsetMaximumFailoverAttempts(int maximumFailoverAttempts) voidsetRoundRobin(boolean roundRobin) voidsetSticky(boolean sticky) protected booleanshouldFailOver(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, toStringMethods inherited from class org.apache.camel.support.AsyncProcessorSupport
process, processAsyncMethods inherited from class org.apache.camel.support.service.BaseService
build, doBuild, doFail, doLifecycleChange, doResume, doSuspend, fail, getInternalLock, getStatus, init, isBuild, isInit, isNew, isShutdown, isStarted, isStarting, isStartingOrStarted, isStopped, isStopping, isStoppingOrStopped, isSuspended, isSuspending, isSuspendingOrSuspended, resume, shutdown, start, stop, suspendMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface org.apache.camel.AsyncProcessor
processAsyncMethods inherited from interface org.apache.camel.spi.IdAware
setGeneratedIdMethods inherited from interface org.apache.camel.Processor
processMethods inherited from interface org.apache.camel.Service
build, close, init, start, stopMethods inherited from interface org.apache.camel.ShutdownableService
shutdownMethods inherited from interface org.apache.camel.StatefulService
getStatus, isStarted, isStarting, isStopped, isStopping, isSuspendingMethods inherited from interface org.apache.camel.SuspendableService
isSuspended, resume, suspend
-
Constructor Details
-
FailOverLoadBalancer
public FailOverLoadBalancer() -
FailOverLoadBalancer
-
-
Method Details
-
getCamelContext
public org.apache.camel.CamelContext getCamelContext()- Specified by:
getCamelContextin interfaceorg.apache.camel.spi.HasCamelContext
-
setCamelContext
public void setCamelContext(org.apache.camel.CamelContext camelContext) - Specified by:
setCamelContextin interfaceorg.apache.camel.CamelContextAware
-
getLastGoodIndex
public int getLastGoodIndex() -
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:
isRunAllowedin interfaceorg.apache.camel.StatefulService- Overrides:
isRunAllowedin classorg.apache.camel.support.service.BaseService
-
process
public boolean process(org.apache.camel.Exchange exchange, org.apache.camel.AsyncCallback callback) - Specified by:
processin interfaceorg.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
- Specified by:
getTraceLabelin interfaceorg.apache.camel.Traceable
-
getExceptionFailureStatistics
-
reset
public void reset() -
doStart
- Overrides:
doStartin classLoadBalancerSupport- Throws:
Exception
-