Class InMemoryMetricExporter

  • All Implemented Interfaces:
    MetricExporter

    public final class InMemoryMetricExporter
    extends Object
    implements 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<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<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 MetricExporter
        Parameters:
        metrics - the collection of MetricData to be exported.
        Returns:
        the result of the export, which is often an asynchronous operation.
      • 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 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 MetricExporter
        Returns:
        a CompletableResultCode which is completed when shutdown completes.