Class DerivedLongCumulative

  • Direct Known Subclasses:
    DerivedLongCumulative.NoopDerivedLongCumulative, DerivedLongCumulativeImpl

    @ThreadSafe
    public abstract class DerivedLongCumulative
    extends java.lang.Object
    Derived Long Cumulative metric, to report cumulative measurement of an int64 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"));
    
       DerivedLongCumulative cumulative = metricRegistry.addDerivedLongCumulative(
           "processed_jobs", "Total processed jobs in a queue", "1", labelKeys);
    
       QueueManager queueManager = new QueueManager();
       cumulative.createTimeSeries(labelValues, queueManager,
             new ToLongFunction<QueueManager>() {
               {@literal @}Override
               public long applyAsLong(QueueManager queue) {
                 return queue.size();
               }
             });
    
       void doWork() {
          // Your code here.
       }
     }
    
     
    Since:
    0.21
    • Constructor Detail

      • DerivedLongCumulative

        public DerivedLongCumulative()
    • Method Detail

      • createTimeSeries

        public abstract <T> void createTimeSeries​(java.util.List<LabelValue> labelValues,
                                                  T obj,
                                                  ToLongFunction<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
      • newNoopDerivedLongCumulative

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