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 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
-
Method Summary
Modifier and TypeMethodDescriptionvoid
long
getLimit()
protected long
getPermissions
(long sleepTime, RateLimitingExecutor.MemoryUsage memoryUsage) protected long
Calculate best sleep time for current limit value.void
void
run()
void
setLimit
(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:
initialize
in interfacetigase.kernel.beans.Initializable
-
beforeUnregister
public void beforeUnregister()- Specified by:
beforeUnregister
in interfacetigase.kernel.beans.UnregisterAware
- Overrides:
beforeUnregister
in classAbstractQueuingExecutor
-
currentMemoryUsage
-