Class DerivedDoubleCumulative

  • Direct Known Subclasses:
    DerivedDoubleCumulative.NoopDerivedDoubleCumulative, DerivedDoubleCumulativeImpl

    @ThreadSafe
    public abstract class DerivedDoubleCumulative
    extends java.lang.Object
    Derived Double Cumulative metric, to report cumulative measurement of a double value. Cumulative values can go up or stay the same, but can never go down. Cumulative values cannot be negative.

    Example: Create a Cumulative with an object and a callback function.

    
     class YourClass {
    
       private static final MetricRegistry metricRegistry = Metrics.getMetricRegistry();
    
       List<LabelKey> labelKeys = Arrays.asList(LabelKey.create("Name", "desc"));
       List<LabelValue> labelValues = Arrays.asList(LabelValue.create("Inbound"));
    
       DerivedDoubleCumulative cumulative = metricRegistry.addDerivedDoubleCumulative(
           "processed_jobs", "Processed jobs in a queue", "1", labelKeys);
    
       QueueManager queueManager = new QueueManager();
       cumulative.createTimeSeries(labelValues, queueManager,
             new ToDoubleFunction<QueueManager>() {
               {@literal @}Override
               public double applyAsDouble(QueueManager queue) {
                 return queue.size();
               }
             });
    
       void doWork() {
          // Your code here.
       }
     }
    
     
    Since:
    0.21
    • Constructor Detail

      • DerivedDoubleCumulative

        public DerivedDoubleCumulative()
    • Method Detail

      • createTimeSeries

        public abstract <T> void createTimeSeries​(java.util.List<LabelValue> labelValues,
                                                  T obj,
                                                  ToDoubleFunction<T> function)
        Creates a TimeSeries. The value of a single point in the TimeSeries is observed from a callback function. This function is invoked whenever metrics are collected, meaning the reported value is up-to-date. It keeps a WeakReference to the object and it is the user's responsibility to manage the lifetime of the object.
        Type Parameters:
        T - the type of the object upon which the function derives a measurement.
        Parameters:
        labelValues - the list of label values.
        obj - the state object from which the function derives a measurement.
        function - the function to be called.
        Throws:
        java.lang.NullPointerException - if labelValues is null OR any element of labelValues is null OR function is null.
        java.lang.IllegalArgumentException - if different time series with the same labels already exists OR if number of labelValuess are not equal to the label keys.
        Since:
        0.21
      • removeTimeSeries

        public abstract void removeTimeSeries​(java.util.List<LabelValue> labelValues)
        Removes the TimeSeries from the cumulative metric, if it is present.
        Parameters:
        labelValues - the list of label values.
        Throws:
        java.lang.NullPointerException - if labelValues is null.
        Since:
        0.21
      • clear

        public abstract void clear()
        Removes all TimeSeries from the cumulative metric.
        Since:
        0.21
      • newNoopDerivedDoubleCumulative

        static DerivedDoubleCumulative newNoopDerivedDoubleCumulative​(java.lang.String name,
                                                                      java.lang.String description,
                                                                      java.lang.String unit,
                                                                      java.util.List<LabelKey> labelKeys)
        Returns the no-op implementation of the DerivedDoubleCumulative.
        Returns:
        the no-op implementation of the DerivedDoubleCumulative.
        Since:
        0.21