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.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 thePipelinein 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 classFailOverLoadBalancer.State
-
Constructor Summary
Constructors Constructor Description FailOverLoadBalancer()FailOverLoadBalancer(List<Class<?>> exceptions)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected voiddoStart()protected voiddoStop()org.apache.camel.CamelContextgetCamelContext()ExceptionFailureStatisticsgetExceptionFailureStatistics()List<Class<?>>getExceptions()intgetLastGoodIndex()intgetMaximumFailoverAttempts()StringgetTraceLabel()booleanisRoundRobin()booleanisRunAllowed()booleanisSticky()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, getId, getProcessors, getRouteId, hasNext, next, removeProcessor, setId, setRouteId, toString
-
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
-
-
-
-
Method Detail
-
getCamelContext
public org.apache.camel.CamelContext getCamelContext()
- Specified by:
getCamelContextin interfaceorg.apache.camel.CamelContextAware
-
setCamelContext
public void setCamelContext(org.apache.camel.CamelContext camelContext)
- Specified by:
setCamelContextin interfaceorg.apache.camel.CamelContextAware
-
getLastGoodIndex
public int getLastGoodIndex()
-
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
public String getTraceLabel()
- Specified by:
getTraceLabelin interfaceorg.apache.camel.Traceable
-
getExceptionFailureStatistics
public ExceptionFailureStatistics getExceptionFailureStatistics()
-
reset
public void reset()
-
doStart
protected void doStart() throws Exception- Overrides:
doStartin classLoadBalancerSupport- Throws:
Exception
-
doStop
protected void doStop() throws Exception- Overrides:
doStopin classLoadBalancerSupport- Throws:
Exception
-
-