Package tigase.pubsub.utils.executors
Class RateLimitingExecutor
java.lang.Object
tigase.pubsub.utils.executors.AbstractQueuingExecutor
tigase.pubsub.utils.executors.RateLimitingExecutor
- All Implemented Interfaces:
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 Runnable, tigase.kernel.beans.Initializable
Class implements an executor limiting number of executions of submitted tasks per second.
-
Nested Class Summary
Nested ClassesNested 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 -
Method Summary
Modifier and TypeMethodDescriptionvoidlonggetLimit()protected longgetPermissions(long sleepTime, RateLimitingExecutor.MemoryUsage memoryUsage) protected longCalculate best sleep time for current limit value.voidvoidrun()voidsetLimit(long limit) Methods inherited from class tigase.pubsub.utils.executors.AbstractQueuingExecutor
execute, isOverloaded, submit
-
Constructor Details
-
RateLimitingExecutor
public RateLimitingExecutor()
-
-
Method Details
-
getLimit
public long getLimit() -
setLimit
public void setLimit(long limit) -
run
public void run() -
getSleepTime
protected long getSleepTime()Calculate best sleep time for current limit value.- Returns:
-
getPermissions
-
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
-