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
-
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
-
Method Summary
Modifier and TypeMethodDescriptionprotected void
doStart()
org.apache.camel.CamelContext
int
int
boolean
boolean
boolean
isSticky()
protected org.apache.camel.Exchange
prepareExchangeForFailover
(org.apache.camel.Exchange exchange) Prepares the exchange for failoverboolean
process
(org.apache.camel.Exchange exchange, org.apache.camel.AsyncCallback callback) void
reset()
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
-
-
Method Details
-
getCamelContext
public org.apache.camel.CamelContext getCamelContext()- Specified by:
getCamelContext
in interfaceorg.apache.camel.spi.HasCamelContext
-
setCamelContext
public void setCamelContext(org.apache.camel.CamelContext camelContext) - Specified by:
setCamelContext
in 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:
isRunAllowed
in interfaceorg.apache.camel.StatefulService
- Overrides:
isRunAllowed
in classorg.apache.camel.support.service.BaseService
-
process
public boolean process(org.apache.camel.Exchange exchange, org.apache.camel.AsyncCallback callback) - Specified by:
process
in 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:
getTraceLabel
in interfaceorg.apache.camel.Traceable
-
getExceptionFailureStatistics
-
reset
public void reset() -
doStart
- Overrides:
doStart
in classLoadBalancerSupport
- Throws:
Exception
-