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 Summary
FieldsModifier and TypeFieldDescriptionprotected longprotected longprotected booleanFields inherited from interface org.apache.pulsar.broker.service.PublishRateLimiter
DISABLED_RATE_LIMITER -
Constructor Summary
ConstructorsConstructorDescriptionResourceGroupPublishLimiter(org.apache.pulsar.common.policies.data.ResourceGroup resourceGroup, ScheduledExecutorService scheduledExecutorService) -
Method Summary
Modifier and TypeMethodDescriptionvoidapply()voidchecks and update state of current publish and marks if it has exceeded the rate-limiting threshold.voidclose()Close the limiter.voidincrementPublishCount(int numOfMessages, long msgSizeInBytes) increments current publish count.booleanreturns true if current publish has reached the rate-limiting threshold.voidregisterRateLimitFunction(String name, org.apache.pulsar.common.util.RateLimitFunction func) booleanreset current publish count.booleantryAcquire(int numbers, long bytes) try to acquire permit.voidvoidupdate(long publishRateInMsgs, long publishRateInBytes) voidupdate(ResourceGroup.BytesAndMessagesCount maxPublishRate) voidupdates 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)
-
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: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
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
-
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(String name, org.apache.pulsar.common.util.RateLimitFunction func) -
unregisterRateLimitFunction
-
close
public void close()Description copied from interface:PublishRateLimiterClose the limiter.- Specified by:
closein interfaceAutoCloseable- Specified by:
closein interfacePublishRateLimiter
-
apply
public void apply()- Specified by:
applyin interfaceorg.apache.pulsar.common.util.RateLimitFunction
-