// Copyright The OpenTelemetry Authors // SPDX-License-Identifier: Apache-2.0 package batchprocessor // import "go.opentelemetry.io/collector/processor/batchprocessor" import ( "context" "time" "go.opentelemetry.io/collector/component" "go.opentelemetry.io/collector/consumer" "go.opentelemetry.io/collector/internal/obsreportconfig" "go.opentelemetry.io/collector/processor" ) const ( // The value of "type" key in configuration. typeStr = "batch" defaultSendBatchSize = uint32(8192) defaultTimeout = 200 * time.Millisecond // defaultMetadataCardinalityLimit should be set to the number // of metadata configurations the user expects to submit to // the collector. defaultMetadataCardinalityLimit = 1000 ) // NewFactory returns a new factory for the Batch processor. func NewFactory() processor.Factory { return processor.NewFactory( typeStr, createDefaultConfig, processor.WithTraces(createTraces, component.StabilityLevelStable), processor.WithMetrics(createMetrics, component.StabilityLevelStable), processor.WithLogs(createLogs, component.StabilityLevelStable)) } func createDefaultConfig() component.Config { return &Config{ SendBatchSize: defaultSendBatchSize, Timeout: defaultTimeout, MetadataCardinalityLimit: defaultMetadataCardinalityLimit, } } func createTraces( _ context.Context, set processor.CreateSettings, cfg component.Config, nextConsumer consumer.Traces, ) (processor.Traces, error) { return newBatchTracesProcessor(set, nextConsumer, cfg.(*Config), obsreportconfig.UseOtelForInternalMetricsfeatureGate.IsEnabled()) } func createMetrics( _ context.Context, set processor.CreateSettings, cfg component.Config, nextConsumer consumer.Metrics, ) (processor.Metrics, error) { return newBatchMetricsProcessor(set, nextConsumer, cfg.(*Config), obsreportconfig.UseOtelForInternalMetricsfeatureGate.IsEnabled()) } func createLogs( _ context.Context, set processor.CreateSettings, cfg component.Config, nextConsumer consumer.Logs, ) (processor.Logs, error) { return newBatchLogsProcessor(set, nextConsumer, cfg.(*Config), obsreportconfig.UseOtelForInternalMetricsfeatureGate.IsEnabled()) }