org.apache.camel.processor
Class Throttler
java.lang.Object
org.apache.camel.support.ServiceSupport
org.apache.camel.processor.DelegateAsyncProcessor
org.apache.camel.processor.DelayProcessorSupport
org.apache.camel.processor.Throttler
- All Implemented Interfaces:
- AsyncProcessor, DelegateProcessor, Navigate<Processor>, Processor, Service, ShutdownableService, StatefulService, SuspendableService, Traceable
public class Throttler
- extends DelayProcessorSupport
- implements Traceable
A Throttler
will set a limit on the maximum number of message exchanges which can be sent
to a processor within a specific time period.
This pattern can be
extremely useful if you have some external system which meters access; such
as only allowing 100 requests per second; or if huge load can cause a
particular system to malfunction or to reduce its throughput you might want
to introduce some throttling.
- Version:
Methods inherited from class org.apache.camel.processor.DelayProcessorSupport |
currentSystemTime, delay, doShutdown, doStart, getDelayedCount, handleSleepInterruptedException, isAsyncDelayed, isCallerRunsWhenRejected, process, setAsyncDelayed, setCallerRunsWhenRejected |
Methods inherited from class org.apache.camel.support.ServiceSupport |
doResume, doSuspend, getStatus, getVersion, isRunAllowed, isStarted, isStarting, isStopped, isStopping, isStoppingOrStopped, isSuspended, isSuspending, resume, shutdown, start, stop, suspend |
Throttler
public Throttler(CamelContext camelContext,
Processor processor,
Expression maxRequestsPerPeriodExpression,
long timePeriodMillis,
ScheduledExecutorService executorService,
boolean shutdownExecutorService)
toString
public String toString()
- Overrides:
toString
in class DelegateAsyncProcessor
getTraceLabel
public String getTraceLabel()
- Description copied from interface:
Traceable
- Gets the trace label used for logging when tracing is enabled.
The label should be short and precise.
- Specified by:
getTraceLabel
in interface Traceable
- Returns:
- the label
setMaximumRequestsPerPeriodExpression
public void setMaximumRequestsPerPeriodExpression(Expression maxRequestsPerPeriodExpression)
- Sets the maximum number of requests per time period expression
getMaximumRequestsPerPeriodExpression
public Expression getMaximumRequestsPerPeriodExpression()
getTimePeriodMillis
public long getTimePeriodMillis()
getCurrentMaximumRequestsPerPeriod
public long getCurrentMaximumRequestsPerPeriod()
- Gets the current maximum request per period value.
setTimePeriodMillis
public void setTimePeriodMillis(long timePeriodMillis)
- Sets the time period during which the maximum number of requests apply
calculateDelay
protected long calculateDelay(Exchange exchange)
- Specified by:
calculateDelay
in class DelayProcessorSupport
nextSlot
protected Throttler.TimeSlot nextSlot()
Apache Camel