Class ResourceGroupPublishLimiter

java.lang.Object
org.apache.pulsar.broker.resourcegroup.ResourceGroupPublishLimiter
All Implemented Interfaces:
AutoCloseable, PublishRateLimiter, org.apache.pulsar.common.util.RateLimitFunction

public class ResourceGroupPublishLimiter extends Object implements PublishRateLimiter, org.apache.pulsar.common.util.RateLimitFunction, AutoCloseable
  • Field Details

    • publishMaxMessageRate

      protected volatile long publishMaxMessageRate
    • publishMaxByteRate

      protected volatile long publishMaxByteRate
    • publishThrottlingEnabled

      protected volatile boolean publishThrottlingEnabled
  • Constructor Details

    • ResourceGroupPublishLimiter

      public ResourceGroupPublishLimiter(org.apache.pulsar.common.policies.data.ResourceGroup resourceGroup, ScheduledExecutorService scheduledExecutorService)
  • Method Details

    • checkPublishRate

      public void checkPublishRate()
      Description copied from interface: PublishRateLimiter
      checks and update state of current publish and marks if it has exceeded the rate-limiting threshold.
      Specified by:
      checkPublishRate in interface PublishRateLimiter
    • incrementPublishCount

      public void incrementPublishCount(int numOfMessages, long msgSizeInBytes)
      Description copied from interface: PublishRateLimiter
      increments current publish count.
      Specified by:
      incrementPublishCount in interface PublishRateLimiter
    • resetPublishCount

      public boolean resetPublishCount()
      Description copied from interface: PublishRateLimiter
      reset current publish count.
      Specified by:
      resetPublishCount in interface PublishRateLimiter
      Returns:
    • isPublishRateExceeded

      public boolean isPublishRateExceeded()
      Description copied from interface: PublishRateLimiter
      returns true if current publish has reached the rate-limiting threshold.
      Specified by:
      isPublishRateExceeded in interface PublishRateLimiter
      Returns:
    • update

      public void update(org.apache.pulsar.common.policies.data.Policies policies, String clusterName)
      Description copied from interface: PublishRateLimiter
      updates rate-limiting threshold based on policies.
      Specified by:
      update in interface PublishRateLimiter
    • update

      public void update(org.apache.pulsar.common.policies.data.PublishRate maxPublishRate)
      Description copied from interface: PublishRateLimiter
      updates rate-limiting threshold based on passed in rate limiter.
      Specified by:
      update in interface PublishRateLimiter
    • update

      public void update(ResourceGroup.BytesAndMessagesCount maxPublishRate)
    • getResourceGroupPublishValues

      public ResourceGroup.BytesAndMessagesCount getResourceGroupPublishValues()
    • update

      public void update(org.apache.pulsar.common.policies.data.ResourceGroup resourceGroup)
    • update

      public void update(long publishRateInMsgs, long publishRateInBytes)
    • tryAcquire

      public boolean tryAcquire(int numbers, long bytes)
      Description copied from interface: PublishRateLimiter
      try to acquire permit.
      Specified by:
      tryAcquire in interface PublishRateLimiter
    • registerRateLimitFunction

      public void registerRateLimitFunction(String name, org.apache.pulsar.common.util.RateLimitFunction func)
    • unregisterRateLimitFunction

      public void unregisterRateLimitFunction(String name)
    • close

      public void close()
      Description copied from interface: PublishRateLimiter
      Close the limiter.
      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface PublishRateLimiter
    • apply

      public void apply()
      Specified by:
      apply in interface org.apache.pulsar.common.util.RateLimitFunction