Class ResourceGroupPublishLimiter
- java.lang.Object
-
- org.apache.pulsar.broker.resourcegroup.ResourceGroupPublishLimiter
-
- All Implemented Interfaces:
java.lang.AutoCloseable,PublishRateLimiter,org.apache.pulsar.common.util.RateLimitFunction
public class ResourceGroupPublishLimiter extends java.lang.Object implements PublishRateLimiter, org.apache.pulsar.common.util.RateLimitFunction, java.lang.AutoCloseable
-
-
Field Summary
Fields Modifier and Type Field Description protected longpublishMaxByteRateprotected longpublishMaxMessageRateprotected booleanpublishThrottlingEnabled-
Fields inherited from interface org.apache.pulsar.broker.service.PublishRateLimiter
DISABLED_RATE_LIMITER
-
-
Constructor Summary
Constructors Constructor Description ResourceGroupPublishLimiter(org.apache.pulsar.common.policies.data.ResourceGroup resourceGroup, java.util.concurrent.ScheduledExecutorService scheduledExecutorService)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidapply()voidcheckPublishRate()checks and update state of current publish and marks if it has exceeded the rate-limiting threshold.voidclose()Close the limiter.ResourceGroup.BytesAndMessagesCountgetResourceGroupPublishValues()voidincrementPublishCount(int numOfMessages, long msgSizeInBytes)increments current publish count.booleanisPublishRateExceeded()returns true if current publish has reached the rate-limiting threshold.voidregisterRateLimitFunction(java.lang.String name, org.apache.pulsar.common.util.RateLimitFunction func)booleanresetPublishCount()reset current publish count.booleantryAcquire(int numbers, long bytes)try to acquire permit.voidunregisterRateLimitFunction(java.lang.String name)voidupdate(long publishRateInMsgs, long publishRateInBytes)voidupdate(ResourceGroup.BytesAndMessagesCount maxPublishRate)voidupdate(org.apache.pulsar.common.policies.data.Policies policies, java.lang.String clusterName)updates rate-limiting threshold based on policies.voidupdate(org.apache.pulsar.common.policies.data.PublishRate maxPublishRate)updates rate-limiting threshold based on passed in rate limiter.voidupdate(org.apache.pulsar.common.policies.data.ResourceGroup resourceGroup)
-
-
-
Method Detail
-
checkPublishRate
public void checkPublishRate()
Description copied from interface:PublishRateLimiterchecks and update state of current publish and marks if it has exceeded the rate-limiting threshold.- Specified by:
checkPublishRatein interfacePublishRateLimiter
-
incrementPublishCount
public void incrementPublishCount(int numOfMessages, long msgSizeInBytes)Description copied from interface:PublishRateLimiterincrements current publish count.- Specified by:
incrementPublishCountin interfacePublishRateLimiter
-
resetPublishCount
public boolean resetPublishCount()
Description copied from interface:PublishRateLimiterreset current publish count.- Specified by:
resetPublishCountin interfacePublishRateLimiter- Returns:
-
isPublishRateExceeded
public boolean isPublishRateExceeded()
Description copied from interface:PublishRateLimiterreturns true if current publish has reached the rate-limiting threshold.- Specified by:
isPublishRateExceededin interfacePublishRateLimiter- Returns:
-
update
public void update(org.apache.pulsar.common.policies.data.Policies policies, java.lang.String clusterName)Description copied from interface:PublishRateLimiterupdates rate-limiting threshold based on policies.- Specified by:
updatein interfacePublishRateLimiter
-
update
public void update(org.apache.pulsar.common.policies.data.PublishRate maxPublishRate)
Description copied from interface:PublishRateLimiterupdates rate-limiting threshold based on passed in rate limiter.- Specified by:
updatein interfacePublishRateLimiter
-
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:PublishRateLimitertry to acquire permit.- Specified by:
tryAcquirein interfacePublishRateLimiter
-
registerRateLimitFunction
public void registerRateLimitFunction(java.lang.String name, org.apache.pulsar.common.util.RateLimitFunction func)
-
unregisterRateLimitFunction
public void unregisterRateLimitFunction(java.lang.String name)
-
close
public void close()
Description copied from interface:PublishRateLimiterClose the limiter.- Specified by:
closein interfacejava.lang.AutoCloseable- Specified by:
closein interfacePublishRateLimiter
-
apply
public void apply()
- Specified by:
applyin interfaceorg.apache.pulsar.common.util.RateLimitFunction
-
-