Class ThrottlingExceptionRoutePolicy

  • All Implemented Interfaces:
    AutoCloseable, org.apache.camel.CamelContextAware, org.apache.camel.Service, org.apache.camel.ShutdownableService, org.apache.camel.spi.RoutePolicy, org.apache.camel.StatefulService, org.apache.camel.SuspendableService

    public class ThrottlingExceptionRoutePolicy
    extends RoutePolicySupport
    implements org.apache.camel.CamelContextAware
    Modeled after the circuit breaker ThrottlingInflightRoutePolicy this RoutePolicy will stop consuming from an endpoint based on the type of exceptions that are thrown and the threshold setting. the scenario: if a route cannot process data from an endpoint due to problems with resources used by the route (ie database down) then it will stop consuming new messages from the endpoint by stopping the consumer. The implementation is comparable to the Circuit Breaker pattern. After a set amount of time, it will move to a half open state and attempt to determine if the consumer can be started. There are two ways to determine if a route can be closed after being opened (1) start the consumer and check the failure threshold (2) call the ThrottlingExceptionHalfOpenHandler The second option allows a custom check to be performed without having to take on the possibility of multiple messages from the endpoint. The idea is that a handler could run a simple test (ie select 1 from dual) to determine if the processes that cause the route to be open are now available
    • Constructor Detail

      • ThrottlingExceptionRoutePolicy

        public ThrottlingExceptionRoutePolicy​(int threshold,
                                              long failureWindow,
                                              long halfOpenAfter,
                                              List<Class<?>> handledExceptions)
      • ThrottlingExceptionRoutePolicy

        public ThrottlingExceptionRoutePolicy​(int threshold,
                                              long failureWindow,
                                              long halfOpenAfter,
                                              List<Class<?>> handledExceptions,
                                              boolean keepOpen)
    • Method Detail

      • setCamelContext

        public void setCamelContext​(org.apache.camel.CamelContext camelContext)
        Specified by:
        setCamelContext in interface org.apache.camel.CamelContextAware
      • getCamelContext

        public org.apache.camel.CamelContext getCamelContext()
        Specified by:
        getCamelContext in interface org.apache.camel.CamelContextAware
      • onInit

        public void onInit​(org.apache.camel.Route route)
        Specified by:
        onInit in interface org.apache.camel.spi.RoutePolicy
        Overrides:
        onInit in class RoutePolicySupport
      • onStart

        public void onStart​(org.apache.camel.Route route)
        Specified by:
        onStart in interface org.apache.camel.spi.RoutePolicy
        Overrides:
        onStart in class RoutePolicySupport
      • onExchangeDone

        public void onExchangeDone​(org.apache.camel.Route route,
                                   org.apache.camel.Exchange exchange)
        Specified by:
        onExchangeDone in interface org.apache.camel.spi.RoutePolicy
        Overrides:
        onExchangeDone in class RoutePolicySupport
      • isThresholdExceeded

        protected boolean isThresholdExceeded()
      • openCircuit

        protected void openCircuit​(org.apache.camel.Route route)
      • addHalfOpenTimer

        protected void addHalfOpenTimer​(org.apache.camel.Route route)
      • halfOpenCircuit

        protected void halfOpenCircuit​(org.apache.camel.Route route)
      • closeCircuit

        protected void closeCircuit​(org.apache.camel.Route route)
      • dumpState

        public String dumpState()
      • getKeepOpen

        public boolean getKeepOpen()
      • setKeepOpen

        public void setKeepOpen​(boolean keepOpen)
      • getFailureThreshold

        public int getFailureThreshold()
      • setFailureThreshold

        public void setFailureThreshold​(int failureThreshold)
      • getFailureWindow

        public long getFailureWindow()
      • setFailureWindow

        public void setFailureWindow​(long failureWindow)
      • getHalfOpenAfter

        public long getHalfOpenAfter()
      • setHalfOpenAfter

        public void setHalfOpenAfter​(long halfOpenAfter)
      • getFailures

        public int getFailures()
      • getLastFailure

        public long getLastFailure()
      • getOpenedAt

        public long getOpenedAt()