Class DispatchRateLimiter


  • public class DispatchRateLimiter
    extends java.lang.Object
    • 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()