Class AbstractTimer

java.lang.Object
io.micrometer.core.instrument.AbstractMeter
io.micrometer.core.instrument.AbstractTimer
All Implemented Interfaces:
HistogramSupport, Meter, Timer
Direct Known Subclasses:
CumulativeTimer, DropwizardTimer, StepTimer

public abstract class AbstractTimer
extends AbstractMeter
implements Timer
  • Nested Class Summary

    Nested classes/interfaces inherited from interface io.micrometer.core.instrument.Meter

    Meter.Builder, Meter.Id, Meter.Type

    Nested classes/interfaces inherited from interface io.micrometer.core.instrument.Timer

    Timer.Builder, Timer.ResourceSample, Timer.Sample
  • Field Summary

    Fields
    Modifier and Type Field Description
    protected Clock clock  
    protected Histogram histogram  
  • Constructor Summary

    Constructors
    Modifier Constructor Description
    protected AbstractTimer​(Meter.Id id, Clock clock, DistributionStatisticConfig distributionStatisticConfig, PauseDetector pauseDetector, java.util.concurrent.TimeUnit baseTimeUnit)
    Deprecated.
    Timer implementations should now declare at construction time whether they support aggregable percentiles or not.
    protected AbstractTimer​(Meter.Id id, Clock clock, DistributionStatisticConfig distributionStatisticConfig, PauseDetector pauseDetector, java.util.concurrent.TimeUnit baseTimeUnit, boolean supportsAggregablePercentiles)
    Creates a new timer.
  • Method Summary

    Modifier and Type Method Description
    java.util.concurrent.TimeUnit baseTimeUnit()  
    void close()  
    boolean equals​(java.lang.Object o)  
    int hashCode()  
    void record​(long amount, java.util.concurrent.TimeUnit unit)
    Updates the statistics kept by the timer with the specified amount.
    void record​(java.lang.Runnable f)
    Executes the runnable f and records the time taken.
    <T> T record​(java.util.function.Supplier<T> f)
    Executes the Supplier f and records the time taken.
    <T> T recordCallable​(java.util.concurrent.Callable<T> f)
    Executes the callable f and records the time taken.
    protected abstract void recordNonNegative​(long amount, java.util.concurrent.TimeUnit unit)  
    HistogramSnapshot takeSnapshot()
    Summary statistics should be published off of a single snapshot instance so that, for example, there isn't disagreement between the distribution's bucket counts because more events continue to stream in.

    Methods inherited from class io.micrometer.core.instrument.AbstractMeter

    getId

    Methods inherited from class java.lang.Object

    clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait

    Methods inherited from interface io.micrometer.core.instrument.distribution.HistogramSupport

    takeSnapshot

    Methods inherited from interface io.micrometer.core.instrument.Meter

    getId, match, use

    Methods inherited from interface io.micrometer.core.instrument.Timer

    count, histogramCountAtValue, max, mean, measure, percentile, record, totalTime, wrap, wrap, wrap
  • Field Details

    • clock

      protected final Clock clock
    • histogram

      protected final Histogram histogram
  • Constructor Details

    • AbstractTimer

      @Deprecated protected AbstractTimer​(Meter.Id id, Clock clock, DistributionStatisticConfig distributionStatisticConfig, PauseDetector pauseDetector, java.util.concurrent.TimeUnit baseTimeUnit)
      Deprecated.
      Timer implementations should now declare at construction time whether they support aggregable percentiles or not. By declaring it up front, Micrometer can memory optimize the histogram structure used to store distribution statistics.
      Creates a new timer.
      Parameters:
      id - The timer's name and tags.
      clock - The clock used to measure latency.
      distributionStatisticConfig - Configuration determining which distribution statistics are sent.
      pauseDetector - Compensation for coordinated omission.
      baseTimeUnit - The time scale of this timer.
    • AbstractTimer

      protected AbstractTimer​(Meter.Id id, Clock clock, DistributionStatisticConfig distributionStatisticConfig, PauseDetector pauseDetector, java.util.concurrent.TimeUnit baseTimeUnit, boolean supportsAggregablePercentiles)
      Creates a new timer.
      Parameters:
      id - The timer's name and tags.
      clock - The clock used to measure latency.
      distributionStatisticConfig - Configuration determining which distribution statistics are sent.
      pauseDetector - Compensation for coordinated omission.
      baseTimeUnit - The time scale of this timer.
      supportsAggregablePercentiles - Indicates whether the registry supports percentile approximations from histograms.
  • Method Details

    • recordCallable

      public <T> T recordCallable​(java.util.concurrent.Callable<T> f) throws java.lang.Exception
      Description copied from interface: Timer
      Executes the callable f and records the time taken.
      Specified by:
      recordCallable in interface Timer
      Type Parameters:
      T - The return type of the Callable.
      Parameters:
      f - Function to execute and measure the execution time.
      Returns:
      The return value of f.
      Throws:
      java.lang.Exception - Any exception bubbling up from the callable.
    • record

      public <T> T record​(java.util.function.Supplier<T> f)
      Description copied from interface: Timer
      Executes the Supplier f and records the time taken.
      Specified by:
      record in interface Timer
      Type Parameters:
      T - The return type of the Supplier.
      Parameters:
      f - Function to execute and measure the execution time.
      Returns:
      The return value of f.
    • record

      public void record​(java.lang.Runnable f)
      Description copied from interface: Timer
      Executes the runnable f and records the time taken.
      Specified by:
      record in interface Timer
      Parameters:
      f - Function to execute and measure the execution time.
    • record

      public final void record​(long amount, java.util.concurrent.TimeUnit unit)
      Description copied from interface: Timer
      Updates the statistics kept by the timer with the specified amount.
      Specified by:
      record in interface Timer
      Parameters:
      amount - Duration of a single event being measured by this timer. If the amount is less than 0 the value will be dropped.
      unit - Time unit for the amount being recorded.
    • recordNonNegative

      protected abstract void recordNonNegative​(long amount, java.util.concurrent.TimeUnit unit)
    • takeSnapshot

      public HistogramSnapshot takeSnapshot()
      Description copied from interface: HistogramSupport
      Summary statistics should be published off of a single snapshot instance so that, for example, there isn't disagreement between the distribution's bucket counts because more events continue to stream in.
      Specified by:
      takeSnapshot in interface HistogramSupport
      Returns:
      A snapshot of all distribution statistics at a point in time.
    • baseTimeUnit

      public java.util.concurrent.TimeUnit baseTimeUnit()
      Specified by:
      baseTimeUnit in interface Timer
      Returns:
      The base time unit of the timer to which all published metrics will be scaled
    • equals

      public boolean equals​(@Nullable java.lang.Object o)
      Overrides:
      equals in class java.lang.Object
    • hashCode

      public int hashCode()
      Overrides:
      hashCode in class java.lang.Object
    • close

      public void close()
      Specified by:
      close in interface Meter