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.Initializable
Class implements an executor limiting number of executions of submitted tasks per second.
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
RateLimitingExecutor.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 void
beforeUnregister()
RateLimitingExecutor.MemoryUsage
currentMemoryUsage()
long
getLimit()
protected long
getPermissions(long sleepTime, RateLimitingExecutor.MemoryUsage memoryUsage)
protected long
getSleepTime()
Calculate best sleep time for current limit value.void
initialize()
void
run()
void
setLimit(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:
run
in 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:
initialize
in interfacetigase.kernel.beans.Initializable
-
beforeUnregister
public void beforeUnregister()
- Specified by:
beforeUnregister
in interfacetigase.kernel.beans.UnregisterAware
- Overrides:
beforeUnregister
in classAbstractQueuingExecutor
-
currentMemoryUsage
public RateLimitingExecutor.MemoryUsage currentMemoryUsage()
-
-