Class InMemoryMetricExporter

  • All Implemented Interfaces:
    io.opentelemetry.sdk.metrics.export.MetricExporter

    public final class InMemoryMetricExporter
    extends Object
    implements io.opentelemetry.sdk.metrics.export.MetricExporter
    A MetricExporter implementation that can be used to test OpenTelemetry integration.

    Can be created using InMemoryMetricExporter.create()

    Example usage:

    
     public class InMemoryMetricExporterExample {
    
       // creating InMemoryMetricExporter
       private final InMemoryMetricExporter exporter = InMemoryMetricExporter.create();
       private final MeterSdkProvider meterSdkProvider = OpenTelemetrySdk.getMeterProvider();
       private final Meter meter = meterSdkProvider.get("InMemoryMetricExporterExample");
       private IntervalMetricReader intervalMetricReader;
    
       void setup() {
         intervalMetricReader =
             IntervalMetricReader.builder()
                 .setMetricExporter(exporter)
                 .setMetricProducers(Collections.singletonList(meterSdkProvider.getMetricProducer()))
                 .setExportIntervalMillis(1000)
                 .build();
       }
    
       LongCounter generateLongCounterMeter(String name) {
         return meter.longCounterBuilder(name).setDescription("Sample LongCounter").build();
       }
    
       public static void main(String[] args) throws InterruptedException {
         InMemoryMetricExporterExample example = new InMemoryMetricExporterExample();
         example.setup();
         example.generateLongCounterMeter("counter-1");
       }
     }
     
    • Method Detail

      • create

        public static InMemoryMetricExporter create()
        Returns a new instance of the InMemoryMetricExporter.
        Returns:
        a new instance of the InMemoryMetricExporter.
      • getFinishedMetricItems

        public List<io.opentelemetry.sdk.metrics.data.MetricData> getFinishedMetricItems()
        Returns a List of the finished Metrics, represented by MetricData.
        Returns:
        a List of the finished Metrics.
      • reset

        public void reset()
        Clears the internal List of finished Metrics.

        Does not reset the state of this exporter if already shutdown.

      • export

        public io.opentelemetry.sdk.common.CompletableResultCode export​(Collection<io.opentelemetry.sdk.metrics.data.MetricData> metrics)
        Exports the collection of Metrics into the inmemory queue.

        If this is called after shutdown, this will return ResultCode.FAILURE.

        Specified by:
        export in interface io.opentelemetry.sdk.metrics.export.MetricExporter
      • flush

        public io.opentelemetry.sdk.common.CompletableResultCode flush()
        The InMemory exporter does not batch metrics, so this method will immediately return with success.
        Specified by:
        flush in interface io.opentelemetry.sdk.metrics.export.MetricExporter
        Returns:
        always Success
      • shutdown

        public io.opentelemetry.sdk.common.CompletableResultCode shutdown()
        Clears the internal List of finished Metrics.

        Any subsequent call to export() function on this MetricExporter, will return CompletableResultCode.ofFailure()

        Specified by:
        shutdown in interface io.opentelemetry.sdk.metrics.export.MetricExporter