Package org.apache.pulsar.broker.service
Class PublishRateLimiterImpl
- java.lang.Object
-
- org.apache.pulsar.broker.service.PublishRateLimiterImpl
-
- All Implemented Interfaces:
java.lang.AutoCloseable,PublishRateLimiter
public class PublishRateLimiterImpl extends java.lang.Object implements PublishRateLimiter
-
-
Field Summary
Fields Modifier and Type Field Description protected java.util.concurrent.atomic.LongAddercurrentPublishByteCountprotected java.util.concurrent.atomic.LongAddercurrentPublishMsgCountprotected longpublishMaxByteRateprotected intpublishMaxMessageRateprotected booleanpublishRateExceededprotected booleanpublishThrottlingEnabled-
Fields inherited from interface org.apache.pulsar.broker.service.PublishRateLimiter
DISABLED_RATE_LIMITER
-
-
Constructor Summary
Constructors Constructor Description PublishRateLimiterImpl(org.apache.pulsar.common.policies.data.Policies policies, java.lang.String clusterName)PublishRateLimiterImpl(org.apache.pulsar.common.policies.data.PublishRate maxPublishRate)
-
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.
-
-
-
Field Detail
-
publishMaxMessageRate
protected volatile int publishMaxMessageRate
-
publishMaxByteRate
protected volatile long publishMaxByteRate
-
publishThrottlingEnabled
protected volatile boolean publishThrottlingEnabled
-
publishRateExceeded
protected volatile boolean publishRateExceeded
-
currentPublishMsgCount
protected volatile java.util.concurrent.atomic.LongAdder currentPublishMsgCount
-
currentPublishByteCount
protected volatile java.util.concurrent.atomic.LongAdder currentPublishByteCount
-
-
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
-
-