Class 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 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.

    • Constructor Detail

      • FailOverLoadBalancer

        public FailOverLoadBalancer()
      • FailOverLoadBalancer

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

      • getCamelContext

        public org.apache.camel.CamelContext getCamelContext()
        Specified by:
        getCamelContext in interface org.apache.camel.CamelContextAware
      • 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
      • reset

        public void reset()