Package org.apache.camel.throttling
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 basedRoutePolicywhich is capable of dynamic throttling a route based on number of current inflight exchanges. This implementation supports two scopesThrottlingInflightRoutePolicy.ThrottlingScope.ContextandThrottlingInflightRoutePolicy.ThrottlingScope.Route(is default). If context scope is selected then this implementation will use aEventNotifierto listen for events whenExchanges is done, and trigger thethrottle(org.apache.camel.Route, org.apache.camel.Exchange)method. If the route scope is selected then noEventNotifieris in use, as there is already aSynchronizationcallback on the currentExchangewhich triggers thethrottle(org.apache.camel.Route, org.apache.camel.Exchange)when the currentExchangeis done.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classThrottlingInflightRoutePolicy.ThrottlingScope
-
Constructor Summary
Constructors Constructor Description ThrottlingInflightRoutePolicy()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected org.apache.camel.spi.CamelLoggercreateLogger()protected voiddoStart()protected voiddoStop()org.apache.camel.CamelContextgetCamelContext()org.apache.camel.spi.CamelLoggergetLogger()org.apache.camel.LoggingLevelgetLoggingLevel()intgetMaxInflightExchanges()intgetResumePercentOfMax()ThrottlingInflightRoutePolicy.ThrottlingScopegetScope()voidonExchangeDone(org.apache.camel.Route route, org.apache.camel.Exchange exchange)voidonInit(org.apache.camel.Route route)voidsetCamelContext(org.apache.camel.CamelContext camelContext)voidsetLogger(org.apache.camel.spi.CamelLogger logger)Sets the logger to use for logging throttling activity.voidsetLoggingLevel(org.apache.camel.LoggingLevel loggingLevel)Sets the logging level to report the throttling activity.voidsetMaxInflightExchanges(int maxInflightExchanges)Sets the upper limit of number of concurrent inflight exchanges at which point reached the throttler should suspend the route.voidsetResumePercentOfMax(int resumePercentOfMax)Sets at which percentage of the max the throttler should start resuming the route.voidsetScope(ThrottlingInflightRoutePolicy.ThrottlingScope scope)Sets which scope the throttling should be based upon, either route or total scoped.protected voidthrottle(org.apache.camel.Route route, org.apache.camel.Exchange exchange)Throttles the route whenExchanges is done.StringtoString()-
Methods inherited from class org.apache.camel.support.RoutePolicySupport
controller, getExceptionHandler, handleException, onExchangeBegin, onRemove, onResume, onStart, onStop, onSuspend, resumeOrStartConsumer, resumeRoute, setExceptionHandler, startConsumer, startRoute, stopConsumer, stopRoute, stopRoute, stopRouteAsync, suspendOrStopConsumer, suspendRoute, suspendRoute
-
Methods inherited from class org.apache.camel.support.service.BaseService
build, doBuild, doFail, doInit, doLifecycleChange, doResume, doShutdown, doSuspend, fail, getStatus, init, isBuild, isInit, isNew, isRunAllowed, 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
-
onInit
public void onInit(org.apache.camel.Route route)
- Specified by:
onInitin interfaceorg.apache.camel.spi.RoutePolicy- Overrides:
onInitin classRoutePolicySupport
-
onExchangeDone
public void onExchangeDone(org.apache.camel.Route route, org.apache.camel.Exchange exchange)- Specified by:
onExchangeDonein interfaceorg.apache.camel.spi.RoutePolicy- Overrides:
onExchangeDonein classRoutePolicySupport
-
throttle
protected void throttle(org.apache.camel.Route route, org.apache.camel.Exchange exchange)Throttles the route whenExchanges is done.- Parameters:
route- the routeexchange- 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
public ThrottlingInflightRoutePolicy.ThrottlingScope 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:
doStartin classRoutePolicySupport- Throws:
Exception
-
doStop
protected void doStop() throws Exception- Overrides:
doStopin classRoutePolicySupport- Throws:
Exception
-
-