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 thePipeline
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
FailOverLoadBalancer.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 void
doStart()
protected void
doStop()
org.apache.camel.CamelContext
getCamelContext()
ExceptionFailureStatistics
getExceptionFailureStatistics()
List<Class<?>>
getExceptions()
int
getLastGoodIndex()
int
getMaximumFailoverAttempts()
String
getTraceLabel()
boolean
isRoundRobin()
boolean
isRunAllowed()
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, 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:
getCamelContext
in interfaceorg.apache.camel.CamelContextAware
-
setCamelContext
public void setCamelContext(org.apache.camel.CamelContext camelContext)
- Specified by:
setCamelContext
in 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:
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
public String getTraceLabel()
- Specified by:
getTraceLabel
in interfaceorg.apache.camel.Traceable
-
getExceptionFailureStatistics
public ExceptionFailureStatistics getExceptionFailureStatistics()
-
reset
public void reset()
-
doStart
protected void doStart() throws Exception
- Overrides:
doStart
in classLoadBalancerSupport
- Throws:
Exception
-
doStop
protected void doStop() throws Exception
- Overrides:
doStop
in classLoadBalancerSupport
- Throws:
Exception
-
-