Class ThrottlingInflightRoutePolicy

java.lang.Object
org.apache.camel.support.service.BaseService
org.apache.camel.support.service.ServiceSupport
org.apache.camel.support.RoutePolicySupport
org.apache.camel.throttling.ThrottlingInflightRoutePolicy
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 ThrottlingInflightRoutePolicy extends RoutePolicySupport implements org.apache.camel.CamelContextAware
A throttle based RoutePolicy which is capable of dynamic throttling a route based on number of current inflight exchanges.

This implementation supports two scopes ThrottlingInflightRoutePolicy.ThrottlingScope.Context and ThrottlingInflightRoutePolicy.ThrottlingScope.Route (is default). If context scope is selected then this implementation will use a EventNotifier to listen for events when Exchanges is done, and trigger the throttle(org.apache.camel.Route, org.apache.camel.Exchange) method. If the route scope is selected then no EventNotifier is in use, as there is already a Synchronization callback on the current Exchange which triggers the throttle(org.apache.camel.Route, org.apache.camel.Exchange) when the current Exchange is done.

  • Constructor Details

    • ThrottlingInflightRoutePolicy

      public ThrottlingInflightRoutePolicy()
  • Method Details

    • toString

      public String toString()
      Overrides:
      toString in class Object
    • 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
    • onInit

      public void onInit(org.apache.camel.Route route)
      Specified by:
      onInit in interface org.apache.camel.spi.RoutePolicy
      Overrides:
      onInit 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
    • throttle

      protected void throttle(org.apache.camel.Route route, org.apache.camel.Exchange exchange)
      Throttles the route when Exchanges is done.
      Parameters:
      route - the route
      exchange - the exchange
    • getMaxInflightExchanges

      public int getMaxInflightExchanges()
    • setMaxInflightExchanges

      public void setMaxInflightExchanges(int maxInflightExchanges)
      Sets the upper limit of number of concurrent inflight exchanges at which point reached the throttler should suspend the route.

      Is default 1000.

      Parameters:
      maxInflightExchanges - the upper limit of concurrent inflight exchanges
    • getResumePercentOfMax

      public int getResumePercentOfMax()
    • setResumePercentOfMax

      public void setResumePercentOfMax(int resumePercentOfMax)
      Sets at which percentage of the max the throttler should start resuming the route.

      Will by default use 70%.

      Parameters:
      resumePercentOfMax - the percentage must be between 0 and 100
    • getScope

    • setScope

      public void setScope(ThrottlingInflightRoutePolicy.ThrottlingScope scope)
      Sets which scope the throttling should be based upon, either route or total scoped.
      Parameters:
      scope - the scope
    • getLoggingLevel

      public org.apache.camel.LoggingLevel getLoggingLevel()
    • getLogger

      public org.apache.camel.spi.CamelLogger getLogger()
    • setLogger

      public void setLogger(org.apache.camel.spi.CamelLogger logger)
      Sets the logger to use for logging throttling activity.
      Parameters:
      logger - the logger
    • setLoggingLevel

      public void setLoggingLevel(org.apache.camel.LoggingLevel loggingLevel)
      Sets the logging level to report the throttling activity.

      Is default INFO level.

      Parameters:
      loggingLevel - the logging level
    • createLogger

      protected org.apache.camel.spi.CamelLogger createLogger()
    • doStart

      protected void doStart() throws Exception
      Overrides:
      doStart in class RoutePolicySupport
      Throws:
      Exception
    • doStop

      protected void doStop() throws Exception
      Overrides:
      doStop in class RoutePolicySupport
      Throws:
      Exception