Interface MetricPublisher

All Superinterfaces:
AutoCloseable, SdkAutoCloseable
All Known Implementing Classes:
CloudWatchMetricPublisher, LoggingMetricPublisher

@ThreadSafe public interface MetricPublisher extends SdkAutoCloseable
Interface to report and publish the collected SDK metric events to external sources.

Conceptually, a publisher receives a stream of MetricCollection objects overs its lifetime through its publish(MetricCollection) )} method. Implementations are then free further aggregate these events into sets of metrics that are then published to some external system for further use. As long as a publisher is not closed, then it can receive MetricCollection objects at any time. In addition, as the SDK makes use of multithreading, it's possible that the publisher is shared concurrently by multiple threads, and necessitates that all implementations are threadsafe.

The SDK may invoke methods on the interface from multiple threads concurrently so implementations must be threadsafe.

  • Method Summary

    Modifier and Type
    Method
    Description
    void
    void
    publish(MetricCollection metricCollection)
    Notify the publisher of new metric data.
  • Method Details

    • publish

      void publish(MetricCollection metricCollection)
      Notify the publisher of new metric data. After this call returns, the caller can safely discard the given metricCollection instance if it no longer needs it. Implementations are strongly encouraged to complete any further aggregation and publishing of metrics in an asynchronous manner to avoid blocking the calling thread.

      With the exception of a null metricCollection, all invocations of this method must return normally. This is to ensure that callers of the publisher can safely assume that even in situations where an error happens during publishing that it will not interrupt the calling thread.

      Parameters:
      metricCollection - The collection of metrics.
      Throws:
      IllegalArgumentException - If metricCollection is null.
    • close

      void close()

      Important: Implementations must block the calling thread until all pending metrics are published and any resources acquired have been freed.

      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface SdkAutoCloseable