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.
  • Constructor Details

    • RateLimitingExecutor

      public RateLimitingExecutor()
  • Method Details

    • getLimit

      public long getLimit()
    • setLimit

      public void setLimit(long limit)
    • run

      public void run()
      Specified by:
      run in interface 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 interface tigase.kernel.beans.Initializable
    • beforeUnregister

      public void beforeUnregister()
      Specified by:
      beforeUnregister in interface tigase.kernel.beans.UnregisterAware
      Overrides:
      beforeUnregister in class AbstractQueuingExecutor
    • currentMemoryUsage

      public RateLimitingExecutor.MemoryUsage currentMemoryUsage()