public class ResourceGroupPublishLimiter extends Object implements PublishRateLimiter, org.apache.pulsar.common.util.RateLimitFunction, AutoCloseable
| Modifier and Type | Field and Description |
|---|---|
protected long |
publishMaxByteRate |
protected long |
publishMaxMessageRate |
protected boolean |
publishThrottlingEnabled |
DISABLED_RATE_LIMITER| Constructor and Description |
|---|
ResourceGroupPublishLimiter(org.apache.pulsar.common.policies.data.ResourceGroup resourceGroup,
ScheduledExecutorService scheduledExecutorService) |
| Modifier and Type | Method and Description |
|---|---|
void |
apply() |
void |
checkPublishRate()
checks and update state of current publish and marks if it has exceeded the rate-limiting threshold.
|
void |
close()
Close the limiter.
|
ResourceGroup.BytesAndMessagesCount |
getResourceGroupPublishValues() |
void |
incrementPublishCount(int numOfMessages,
long msgSizeInBytes)
increments current publish count.
|
boolean |
isPublishRateExceeded()
returns true if current publish has reached the rate-limiting threshold.
|
void |
registerRateLimitFunction(String name,
org.apache.pulsar.common.util.RateLimitFunction func) |
boolean |
resetPublishCount()
reset current publish count.
|
boolean |
tryAcquire(int numbers,
long bytes)
try to acquire permit.
|
void |
unregisterRateLimitFunction(String name) |
void |
update(long publishRateInMsgs,
long publishRateInBytes) |
void |
update(org.apache.pulsar.common.policies.data.Policies policies,
String clusterName)
updates rate-limiting threshold based on policies.
|
void |
update(org.apache.pulsar.common.policies.data.PublishRate maxPublishRate)
updates rate-limiting threshold based on passed in rate limiter.
|
void |
update(ResourceGroup.BytesAndMessagesCount maxPublishRate) |
void |
update(org.apache.pulsar.common.policies.data.ResourceGroup resourceGroup) |
protected volatile long publishMaxMessageRate
protected volatile long publishMaxByteRate
protected volatile boolean publishThrottlingEnabled
public ResourceGroupPublishLimiter(org.apache.pulsar.common.policies.data.ResourceGroup resourceGroup,
ScheduledExecutorService scheduledExecutorService)
public void checkPublishRate()
PublishRateLimitercheckPublishRate in interface PublishRateLimiterpublic void incrementPublishCount(int numOfMessages,
long msgSizeInBytes)
PublishRateLimiterincrementPublishCount in interface PublishRateLimiterpublic boolean resetPublishCount()
PublishRateLimiterresetPublishCount in interface PublishRateLimiterpublic boolean isPublishRateExceeded()
PublishRateLimiterisPublishRateExceeded in interface PublishRateLimiterpublic void update(org.apache.pulsar.common.policies.data.Policies policies,
String clusterName)
PublishRateLimiterupdate in interface PublishRateLimiterpublic void update(org.apache.pulsar.common.policies.data.PublishRate maxPublishRate)
PublishRateLimiterupdate in interface PublishRateLimiterpublic void update(ResourceGroup.BytesAndMessagesCount maxPublishRate)
public ResourceGroup.BytesAndMessagesCount getResourceGroupPublishValues()
public void update(org.apache.pulsar.common.policies.data.ResourceGroup resourceGroup)
public void update(long publishRateInMsgs,
long publishRateInBytes)
public boolean tryAcquire(int numbers,
long bytes)
PublishRateLimitertryAcquire in interface PublishRateLimiterpublic void registerRateLimitFunction(String name, org.apache.pulsar.common.util.RateLimitFunction func)
public void unregisterRateLimitFunction(String name)
public void close()
PublishRateLimiterclose in interface AutoCloseableclose in interface PublishRateLimiterpublic void apply()
apply in interface org.apache.pulsar.common.util.RateLimitFunctionCopyright © 2017–2022 Apache Software Foundation. All rights reserved.