Interface RateLimiterMBean

  • All Superinterfaces:
    LimiterMBean

    public interface RateLimiterMBean
    extends LimiterMBean

    Defines the JMX interface for controlling a single rate limiter.

    When a node is configured to use the pool clustering mode, operations in this interface that include an argument to specify an array of node IDs can only be used to manage state on the node the management client directs the method call at, as determined by RhinoHousekeepingMBean.getNodeID(). Including the node ID of any other node in the array argument will result in an InvalidArgumentException being thrown. To manage state for another node in pool mode, a client must connect directly with that node.

    Limiter Information

    A CompositeData object containing detailed Limiter information for specified nodes is returned by the methods LimiterMBean.getInfoSummary(int[]) and LimiterMBean.getConfigSummary().

    Field Open Type Description

    limiter-name

    String

    The name of this limiter. Always null for per-node values returned by LimiterMBean.getConfigSummary().

    type

    String

    The type of this limiter. Always null for per-node values returned by LimiterMBean.getConfigSummary().

    node-id

    Integer

    The node ID that this row applies to. -1 for the cluster-wide values row returned by LimiterMBean.getConfigSummary().

    parent

    String

    The name of the parent of this limiter or null if it has no parent. Always null for per-node values returned by LimiterMBean.getConfigSummary().

    maxrate

    Double

    The maximum rate setting for this limiter

    time-unit

    String

    The time unit setting for this limiter. Always null for per-node values returned by LimiterMBean.getConfigSummary().

    bypassed

    Boolean

    The bypassed setting for this limiter

    depth

    Double

    The depth setting for this limiter

    • Method Summary

      All Methods Instance Methods Abstract Methods 
      Modifier and Type Method Description
      double getDepthDefault()
      Get the default "depth" of this limiter (depth is the number of time units' worth of work capacity can be stored by the rate limiter).
      double[] getDepthForNode​(int[] nodeIDs)
      Get the per-node "depth" of this limiter on the specified nodes (depth is the number of time units' worth of work capacity can be stored by the rate limiter).
      double getMaxRateDefault()
      Get the default maximum number of units which can be consumed per time unit by this limiter, eg "100" for a rate of 100 per second.
      double[] getMaxRateForNode​(int[] nodeIDs)
      Get the per-node maximum number of units which can be consumed per time unit by this limiter on the specified nodes, eg "100" for a rate of 100 per second.
      String getTimeUnit()
      Get the type of time unit to be used by this limiter when setting the rate, eg the "seconds" in a rate of 100 per second.
      void setDepthDefault​(double depth)
      Set the default "depth" of this limiter (depth is the number of time units' worth of work capacity can be stored by the rate limiter).
      void setDepthForNode​(double[] depth, int[] nodeIDs)
      Set the per-node "depth" of this limiter on the specified nodes (depth is the number of time units' worth of work capacity can be stored by the rate limiter).
      void setDepthForNode​(Double[] depth, int[] nodeIDs)
      Set the per-node "depth" of this limiter on the specified nodes.
      void setMaxRateDefault​(double maxRate)
      Set the default maximum number of units which can be consumed per time unit by this limiter, eg "100" for a rate of 100 per second.
      void setMaxRateForNode​(double[] maxRate, int[] nodeIDs)
      Set the per-node maximum number of units which can be consumed per time unit by this limiter on the specified nodes, eg "100" for a rate of 100 per second.
      void setMaxRateForNode​(Double[] maxRate, int[] nodeIDs)
      Set the per-node maximum number of units which can be consumed per time unit by this limiter on the specified nodes, eg "100" for a rate of 100 per second.
      void setTimeUnit​(String timeUnit)
      Set the type of time unit to be used by this limiter when setting the rate, eg the "seconds" in a rate of 100 per second.
    • Method Detail

      • getMaxRateDefault

        double getMaxRateDefault()
                          throws ConfigurationException

        Get the default maximum number of units which can be consumed per time unit by this limiter, eg "100" for a rate of 100 per second. This value will be used when no per-node setting exists for a given node.

        Throws:
        ConfigurationException
      • setMaxRateDefault

        void setMaxRateDefault​(double maxRate)
                        throws ConfigurationException,
                               com.opencloud.util.exception.ValidationException

        Set the default maximum number of units which can be consumed per time unit by this limiter, eg "100" for a rate of 100 per second. This value will be used when no per-node setting exists for a given node.

        Throws:
        ConfigurationException
        com.opencloud.util.exception.ValidationException
      • getTimeUnit

        String getTimeUnit()
                    throws ConfigurationException

        Get the type of time unit to be used by this limiter when setting the rate, eg the "seconds" in a rate of 100 per second. Valid values are SECONDS, MINUTES, HOURS, and DAYS.

        Throws:
        ConfigurationException
      • setTimeUnit

        void setTimeUnit​(String timeUnit)
                  throws ConfigurationException,
                         com.opencloud.util.exception.ValidationException

        Set the type of time unit to be used by this limiter when setting the rate, eg the "seconds" in a rate of 100 per second. Valid values are "SECONDS", "MINUTES", "HOURS", and "DAYS".

        Throws:
        ConfigurationException
        com.opencloud.util.exception.ValidationException
      • getDepthDefault

        double getDepthDefault()
                        throws ConfigurationException

        Get the default "depth" of this limiter (depth is the number of time units' worth of work capacity can be stored by the rate limiter). This value will be used when no per-node setting exists for a given node. "Depth" is used to control the amount of burstiness allowed by the rate limiter. High values mean more tolerance of load bursts. Low values result in tighter, more fine grained rate limiting, and less tolerance of load bursts. "1.0" is the default value, and should be adequate for most applications. E.g. for a setting of "200 per second" at depth "1.0", the rate limiter can store up to 200 work units of capacity (1 seconds' worth), which may be used all at once in a load spike. A setting of "2.0" would mean that up to 400 work units could be stored, and a setting of "0.5" means that up to 100 units will be stored.

        Throws:
        ConfigurationException
      • getDepthForNode

        double[] getDepthForNode​(int[] nodeIDs)
                          throws ConfigurationException,
                                 NullPointerException,
                                 InvalidArgumentException

        Get the per-node "depth" of this limiter on the specified nodes (depth is the number of time units' worth of work capacity can be stored by the rate limiter). "Depth" is used to control the amount of burstiness allowed by the rate limiter. High values mean more tolerance of load bursts. Low values result in tighter, more fine grained rate limiting, and less tolerance of load bursts. "1.0" is the default value, and should be adequate for most applications. E.g. for a setting of "200 per second" at depth "1.0", the rate limiter can store up to 200 work units of capacity (1 seconds' worth), which may be used all at once in a load spike. A setting of "2.0" would mean that up to 400 work units could be stored, and a setting of "0.5" means that up to 100 units will be stored.

        Throws:
        ConfigurationException
        NullPointerException
        InvalidArgumentException
      • setDepthDefault

        void setDepthDefault​(double depth)
                      throws ConfigurationException,
                             com.opencloud.util.exception.ValidationException

        Set the default "depth" of this limiter (depth is the number of time units' worth of work capacity can be stored by the rate limiter). This value will be used when no per-node setting exists for a given node. "Depth" is used to control the amount of burstiness allowed by the rate limiter. High values mean more tolerance of load bursts. Low values result in tighter, more fine grained rate limiting, and less tolerance of load bursts. "1.0" is the default value, and should be adequate for most applications. E.g. for a setting of "200 per second" at depth "1.0", the rate limiter can store up to 200 work units of capacity (1 seconds' worth), which may be used all at once in a load spike. A setting of "2.0" would mean that up to 400 work units could be stored, and a setting of "0.5" means that up to 100 units will be stored.

        Throws:
        ConfigurationException
        com.opencloud.util.exception.ValidationException
      • setDepthForNode

        void setDepthForNode​(double[] depth,
                             int[] nodeIDs)
                      throws ConfigurationException,
                             com.opencloud.util.exception.ValidationException,
                             NullPointerException,
                             InvalidArgumentException

        Set the per-node "depth" of this limiter on the specified nodes (depth is the number of time units' worth of work capacity can be stored by the rate limiter). "Depth" is used to control the amount of burstiness allowed by the rate limiter. High values mean more tolerance of load bursts. Low values result in tighter, more fine grained rate limiting, and less tolerance of load bursts. "1.0" is the default value, and should be adequate for most applications. E.g. for a setting of "200 per second" at depth "1.0", the rate limiter can store up to 200 work units of capacity (1 seconds' worth), which may be used all at once in a load spike. A setting of "2.0" would mean that up to 400 work units could be stored, and a setting of "0.5" means that up to 100 units will be stored.

        Throws:
        ConfigurationException
        com.opencloud.util.exception.ValidationException
        NullPointerException
        InvalidArgumentException