func createMetricsExporter()

in cmd/otelinmemexporter/factory.go [35:61]


func createMetricsExporter(
	ctx context.Context,
	settings exporter.Settings,
	rawCfg component.Config,
) (exporter.Metrics, error) {
	cfg := rawCfg.(*Config)
	logger := settings.TelemetrySettings.Logger

	// create in memory metrics store
	store, err := NewStore(cfg.Aggregations, logger)
	if err != nil {
		return nil, fmt.Errorf("failed to create in-memory metrics store: %w", err)
	}
	// Start http server
	newServer(store, cfg.Server.Endpoint, logger).Start()

	exp := newInMemExporter(*cfg, store, logger)
	return exporterhelper.NewMetrics(
		ctx, settings, cfg,
		exp.consumeMetrics,
		exporterhelper.WithCapabilities(consumer.Capabilities{MutatesData: false}),
		// Disable Timeout/RetryOnFailure and SendingQueue
		exporterhelper.WithTimeout(exporterhelper.TimeoutConfig{Timeout: 0}),
		exporterhelper.WithRetry(configretry.BackOffConfig{Enabled: false}),
		exporterhelper.WithQueue(exporterhelper.QueueConfig{Enabled: false}),
	)
}