Package tigase.pubsub.utils.executors
Class RateLimitingExecutor
- java.lang.Object
-
- tigase.pubsub.utils.executors.AbstractQueuingExecutor
-
- tigase.pubsub.utils.executors.RateLimitingExecutor
-
- All Implemented Interfaces:
java.lang.Runnable,tigase.kernel.beans.Initializable,tigase.kernel.beans.UnregisterAware,Executor
@Bean(name="publishExecutor", parent=PubSubComponent.class, active=true, exportable=true) public class RateLimitingExecutor extends AbstractQueuingExecutor implements java.lang.Runnable, tigase.kernel.beans.InitializableClass implements an executor limiting number of executions of submitted tasks per second.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classRateLimitingExecutor.MemoryUsage-
Nested classes/interfaces inherited from interface tigase.pubsub.utils.executors.Executor
Executor.Priority
-
-
Field Summary
-
Fields inherited from class tigase.pubsub.utils.executors.AbstractQueuingExecutor
queue
-
-
Constructor Summary
Constructors Constructor Description RateLimitingExecutor()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidbeforeUnregister()RateLimitingExecutor.MemoryUsagecurrentMemoryUsage()longgetLimit()protected longgetPermissions(long sleepTime, RateLimitingExecutor.MemoryUsage memoryUsage)protected longgetSleepTime()Calculate best sleep time for current limit value.voidinitialize()voidrun()voidsetLimit(long limit)-
Methods inherited from class tigase.pubsub.utils.executors.AbstractQueuingExecutor
execute, isOverloaded, submit
-
-
-
-
Method Detail
-
getLimit
public long getLimit()
-
setLimit
public void setLimit(long limit)
-
run
public void run()
- Specified by:
runin interfacejava.lang.Runnable
-
getSleepTime
protected long getSleepTime()
Calculate best sleep time for current limit value.- Returns:
-
getPermissions
protected long getPermissions(long sleepTime, RateLimitingExecutor.MemoryUsage memoryUsage)
-
initialize
public void initialize()
- Specified by:
initializein interfacetigase.kernel.beans.Initializable
-
beforeUnregister
public void beforeUnregister()
- Specified by:
beforeUnregisterin interfacetigase.kernel.beans.UnregisterAware- Overrides:
beforeUnregisterin classAbstractQueuingExecutor
-
currentMemoryUsage
public RateLimitingExecutor.MemoryUsage currentMemoryUsage()
-
-