Package org.apache.pulsar.broker.service
Class PrecisPublishLimiter
- java.lang.Object
-
- org.apache.pulsar.broker.service.PrecisPublishLimiter
-
- All Implemented Interfaces:
java.lang.AutoCloseable,PublishRateLimiter
public class PrecisPublishLimiter extends java.lang.Object implements PublishRateLimiter
-
-
Field Summary
Fields Modifier and Type Field Description protected longpublishMaxByteRateprotected intpublishMaxMessageRate-
Fields inherited from interface org.apache.pulsar.broker.service.PublishRateLimiter
DISABLED_RATE_LIMITER
-
-
Constructor Summary
Constructors Constructor Description PrecisPublishLimiter(org.apache.pulsar.common.policies.data.Policies policies, java.lang.String clusterName, org.apache.pulsar.common.util.RateLimitFunction rateLimitFunction)PrecisPublishLimiter(org.apache.pulsar.common.policies.data.PublishRate publishRate, org.apache.pulsar.common.util.RateLimitFunction rateLimitFunction)PrecisPublishLimiter(org.apache.pulsar.common.policies.data.PublishRate publishRate, org.apache.pulsar.common.util.RateLimitFunction rateLimitFunction, java.util.concurrent.ScheduledExecutorService scheduledExecutorService)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidcheckPublishRate()checks 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.booleanisPublishRateExceeded()returns true if current publish has reached the rate-limiting threshold.booleanresetPublishCount()reset current publish count.booleantryAcquire(int numbers, long bytes)try to acquire permit.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.
-
-
-
Constructor Detail
-
PrecisPublishLimiter
public PrecisPublishLimiter(org.apache.pulsar.common.policies.data.Policies policies, java.lang.String clusterName, org.apache.pulsar.common.util.RateLimitFunction rateLimitFunction)
-
PrecisPublishLimiter
public PrecisPublishLimiter(org.apache.pulsar.common.policies.data.PublishRate publishRate, org.apache.pulsar.common.util.RateLimitFunction rateLimitFunction)
-
PrecisPublishLimiter
public PrecisPublishLimiter(org.apache.pulsar.common.policies.data.PublishRate publishRate, org.apache.pulsar.common.util.RateLimitFunction rateLimitFunction, java.util.concurrent.ScheduledExecutorService scheduledExecutorService)
-
-
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
-
tryAcquire
public boolean tryAcquire(int numbers, long bytes)Description copied from interface:PublishRateLimitertry to acquire permit.- Specified by:
tryAcquirein interfacePublishRateLimiter
-
close
public void close()
Description copied from interface:PublishRateLimiterClose the limiter.- Specified by:
closein interfacejava.lang.AutoCloseable- Specified by:
closein interfacePublishRateLimiter
-
-