Class DispatchRateLimiter
- java.lang.Object
-
- org.apache.pulsar.broker.service.persistent.DispatchRateLimiter
-
public class DispatchRateLimiter extends java.lang.Object
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classDispatchRateLimiter.Type
-
Constructor Summary
Constructors Constructor Description DispatchRateLimiter(PersistentTopic topic, DispatchRateLimiter.Type type)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description voidclose()longgetAvailableDispatchRateLimitOnByte()returns available byte-permit if msg-dispatch-throttling is enabled else it returns -1.longgetAvailableDispatchRateLimitOnMsg()returns available msg-permit if msg-dispatch-throttling is enabled else it returns -1.longgetDispatchRateOnByte()Get configured byte dispatch-throttling rate.longgetDispatchRateOnMsg()Get configured msg dispatch-throttling rate.static java.util.Optional<org.apache.pulsar.common.policies.data.Policies>getPolicies(BrokerService brokerService, java.lang.String topicName)static java.util.concurrent.CompletableFuture<java.util.Optional<org.apache.pulsar.common.policies.data.Policies>>getPoliciesAsync(BrokerService brokerService, java.lang.String topicName)static org.apache.pulsar.common.policies.data.impl.DispatchRateImplgetPoliciesDispatchRate(java.lang.String cluster, java.util.Optional<org.apache.pulsar.common.policies.data.Policies> policies, DispatchRateLimiter.Type type)java.util.concurrent.CompletableFuture<java.util.Optional<org.apache.pulsar.common.policies.data.DispatchRate>>getPoliciesDispatchRateAsync(BrokerService brokerService)Gets configured dispatch-rate from namespace policies.static java.util.Optional<org.apache.pulsar.common.policies.data.DispatchRate>getTopicPolicyDispatchRate(BrokerService brokerService, java.lang.String topicName, DispatchRateLimiter.Type type)booleanhasMessageDispatchPermit()checks if dispatch-rate limit is configured and if it's configured then check if permits are available or not.booleanisDispatchRateLimitingEnabled()Checks if dispatch-rate limiting is enabled.static booleanisDispatchRateNeeded(BrokerService brokerService, java.util.Optional<org.apache.pulsar.common.policies.data.Policies> policies, java.lang.String topicName, DispatchRateLimiter.Type type)static booleanisDispatchRateNeeded(org.apache.pulsar.broker.ServiceConfiguration serviceConfig, java.util.Optional<org.apache.pulsar.common.policies.data.Policies> policies, java.lang.String topicName, DispatchRateLimiter.Type type)voidonPoliciesUpdate(org.apache.pulsar.common.policies.data.Policies data)booleantryDispatchPermit(long msgPermits, long bytePermits)It acquires msg and bytes permits from rate-limiter and returns if acquired permits succeed.voidupdateDispatchRate()Update dispatch-throttling-rate.voidupdateDispatchRate(org.apache.pulsar.common.policies.data.DispatchRate dispatchRate)Update dispatch rate by updating msg and byte rate-limiter.
-
-
-
Constructor Detail
-
DispatchRateLimiter
public DispatchRateLimiter(PersistentTopic topic, DispatchRateLimiter.Type type)
-
-
Method Detail
-
getAvailableDispatchRateLimitOnMsg
public long getAvailableDispatchRateLimitOnMsg()
returns available msg-permit if msg-dispatch-throttling is enabled else it returns -1.- Returns:
-
getAvailableDispatchRateLimitOnByte
public long getAvailableDispatchRateLimitOnByte()
returns available byte-permit if msg-dispatch-throttling is enabled else it returns -1.- Returns:
-
tryDispatchPermit
public boolean tryDispatchPermit(long msgPermits, long bytePermits)It acquires msg and bytes permits from rate-limiter and returns if acquired permits succeed.- Parameters:
msgPermits-bytePermits-- Returns:
-
hasMessageDispatchPermit
public boolean hasMessageDispatchPermit()
checks if dispatch-rate limit is configured and if it's configured then check if permits are available or not.- Returns:
-
isDispatchRateLimitingEnabled
public boolean isDispatchRateLimitingEnabled()
Checks if dispatch-rate limiting is enabled.- Returns:
-
updateDispatchRate
public void updateDispatchRate()
Update dispatch-throttling-rate. Topic-level has the highest priority, then namespace-level, and finally use dispatch-throttling-rate in broker-level
-
isDispatchRateNeeded
public static boolean isDispatchRateNeeded(BrokerService brokerService, java.util.Optional<org.apache.pulsar.common.policies.data.Policies> policies, java.lang.String topicName, DispatchRateLimiter.Type type)
-
getTopicPolicyDispatchRate
public static java.util.Optional<org.apache.pulsar.common.policies.data.DispatchRate> getTopicPolicyDispatchRate(BrokerService brokerService, java.lang.String topicName, DispatchRateLimiter.Type type)
-
isDispatchRateNeeded
public static boolean isDispatchRateNeeded(org.apache.pulsar.broker.ServiceConfiguration serviceConfig, java.util.Optional<org.apache.pulsar.common.policies.data.Policies> policies, java.lang.String topicName, DispatchRateLimiter.Type type)
-
onPoliciesUpdate
public void onPoliciesUpdate(org.apache.pulsar.common.policies.data.Policies data)
-
getPoliciesDispatchRate
public static org.apache.pulsar.common.policies.data.impl.DispatchRateImpl getPoliciesDispatchRate(java.lang.String cluster, java.util.Optional<org.apache.pulsar.common.policies.data.Policies> policies, DispatchRateLimiter.Type type)
-
getPoliciesDispatchRateAsync
public java.util.concurrent.CompletableFuture<java.util.Optional<org.apache.pulsar.common.policies.data.DispatchRate>> getPoliciesDispatchRateAsync(BrokerService brokerService)
Gets configured dispatch-rate from namespace policies. Returns null if dispatch-rate is not configured- Returns:
-
getPoliciesAsync
public static java.util.concurrent.CompletableFuture<java.util.Optional<org.apache.pulsar.common.policies.data.Policies>> getPoliciesAsync(BrokerService brokerService, java.lang.String topicName)
-
getPolicies
public static java.util.Optional<org.apache.pulsar.common.policies.data.Policies> getPolicies(BrokerService brokerService, java.lang.String topicName)
-
updateDispatchRate
public void updateDispatchRate(org.apache.pulsar.common.policies.data.DispatchRate dispatchRate)
Update dispatch rate by updating msg and byte rate-limiter. If dispatch-rate is configured < 0 then it closes the rate-limiter and disables appropriate rate-limiter.- Parameters:
dispatchRate-
-
getDispatchRateOnMsg
public long getDispatchRateOnMsg()
Get configured msg dispatch-throttling rate. Returns -1 if not configured- Returns:
-
getDispatchRateOnByte
public long getDispatchRateOnByte()
Get configured byte dispatch-throttling rate. Returns -1 if not configured- Returns:
-
close
public void close()
-
-