Skip to content

Configuration Options

This page lists every configuration record in NPipeline with its properties, types, and defaults. Use this as a reference when configuring pipeline behavior.

PipelineRetryOptions

Controls per-item retries, node restarts, and retry delay strategies. Configure via builder.WithRetryOptions().

Namespace: NPipeline.Configuration

csharp
builder.WithRetryOptions(options => options with
{
    MaxItemRetries = 3,
    MaxMaterializedItems = 1000,
    MaxNodeRestartAttempts = 2
});
PropertyTypeDefaultDescription
MaxItemRetriesint0Maximum retries per item before dead-lettering. 0 means no retry.
MaxMaterializedItemsint?nullBuffer cap for materialization. null = unbounded (no cap). Required for node restart on streaming inputs.
DelayStrategyConfigurationRetryDelayStrategyConfiguration?nullBackoff + jitter configuration. null = no delay between retries.
MaxNodeRestartAttemptsint3Maximum node restart attempts after failure.
MaxSequentialNodeAttemptsint5Maximum sequential node execution attempts before giving up.

Static members: PipelineRetryOptions.Default

RetryDelayStrategyConfiguration

Combines a backoff algorithm with an optional jitter strategy. Set via PipelineRetryOptions.DelayStrategyConfiguration or the convenience extension methods.

Namespace: NPipeline.Configuration.RetryDelay

csharp
new RetryDelayStrategyConfiguration(
    BackoffStrategies.ExponentialBackoff(TimeSpan.FromSeconds(1)),
    JitterStrategies.FullJitter())
PropertyTypeDefaultDescription
BackoffStrategyBackoffStrategy(required)Delegate that calculates base delay from attempt number.
JitterStrategyJitterStrategy?nullDelegate that randomizes the base delay. null = no jitter.

See Retry Strategies for all built-in backoff and jitter options.

PipelineCircuitBreakerOptions

Controls the circuit breaker that prevents cascading failures. Configure via builder.WithCircuitBreaker().

Namespace: NPipeline.Configuration

csharp
builder.WithCircuitBreaker(
    failureThreshold: 5,
    openDuration: TimeSpan.FromMinutes(1),
    samplingWindow: TimeSpan.FromMinutes(5));
PropertyTypeDefaultDescription
FailureThresholdint5Failures before tripping the breaker (must be ≥ 1).
OpenDurationTimeSpan1 minHow long the breaker stays open before transitioning to half-open.
SamplingWindowTimeSpan5 minRolling window for failure tracking.
EnabledbooltrueWhether the circuit breaker is active.
ThresholdTypeCircuitBreakerThresholdTypeConsecutiveFailuresHow failures are counted: ConsecutiveFailures, RollingWindowCount, or RollingWindowRate.
FailureRateThresholddouble0.5Failure rate (0.0–1.0) for rate-based threshold types.
HalfOpenSuccessThresholdint1Consecutive successes needed in half-open to close.
HalfOpenMaxAttemptsint5Maximum attempts allowed in half-open state.
TrackOperationsInWindowbooltrueWhether to track operations in the rolling window for statistics.

Static members: PipelineCircuitBreakerOptions.Default, PipelineCircuitBreakerOptions.Disabled

See Circuit Breakers for usage guidance.

CircuitBreakerMemoryManagementOptions

Controls automatic cleanup of per-node circuit breaker instances. Configure via builder.ConfigureCircuitBreakerMemoryManagement().

Namespace: NPipeline.Configuration

PropertyTypeDefaultDescription
CleanupIntervalTimeSpan5 minHow often the cleanup process runs.
InactivityThresholdTimeSpan30 minHow long a breaker must be inactive before removal.
EnableAutomaticCleanupbooltrueWhether automatic cleanup is enabled.
MaxTrackedCircuitBreakersint1000Maximum number of tracked breakers.
CleanupTimeoutTimeSpan30 secTimeout for each cleanup operation.

Static members: CircuitBreakerMemoryManagementOptions.Default, CircuitBreakerMemoryManagementOptions.Disabled

ErrorHandlingConfiguration

Aggregates all error handling settings. Typically configured indirectly through PipelineBuilder methods rather than instantiated directly.

Namespace: NPipeline.Configuration

PropertyTypeDefaultDescription
ResiliencePolicyIResiliencePolicy?nullResilience policy instance. Set via builder.AddResiliencePolicy().
ResiliencePolicyTypeType?nullResilience policy type for DI resolution. Set via builder.AddResiliencePolicy<T>().
DeadLetterSinkIDeadLetterSink?nullDead-letter sink instance. Set via builder.AddDeadLetterSink().
DeadLetterSinkTypeType?nullDead-letter sink type for DI resolution. Set via builder.AddDeadLetterSink<T>().
RetryOptionsPipelineRetryOptions?nullGlobal retry options.
NodeRetryOverridesImmutableDictionary<string, PipelineRetryOptions>?nullPer-node retry option overrides keyed by node ID.
CircuitBreakerOptionsPipelineCircuitBreakerOptions?nullCircuit breaker configuration.
CircuitBreakerMemoryOptionsCircuitBreakerMemoryManagementOptions?nullCircuit breaker memory management.

LineageOptions

Controls data lineage tracking behavior. Configure via builder.EnableItemLevelLineage().

Namespace: NPipeline.Configuration

csharp
builder.EnableItemLevelLineage(options => options with
{
    SampleEvery = 50,
    CaptureHopTimestamps = true,
    RedactData = true
});
PropertyTypeDefaultDescription
StrictboolfalseThrow on lineage mismatch (vs. log a warning).
WarnOnMismatchbooltrueLog a warning when lineage data is inconsistent.
OnMismatchAction<LineageMismatchContext>?nullCustom callback for mismatch events.
MaterializationCapint?nullMax items to materialize for lineage tracking.
OverflowPolicyOverflowPolicyDegradeWhat to do when materialization cap is exceeded.
CaptureHopTimestampsbooltrueRecord per-hop enter/exit timestamps.
CaptureDecisionsbooltrueRecord decision outcomes (Emitted, FilteredOut, Joined, etc.).
CaptureObservedCardinalitybooltrueRecord Zero/One/Many cardinality and counts.
CaptureAncestryMappingboolfalseRecord full ancestry mapping when materialization allows.
CaptureHopSnapshotsboolfalseRecord per-hop input/output snapshots.
SampleEveryint100Deterministic sampling rate (1 in N items).
DeterministicSamplingbooltrueUse CorrelationId hashing for consistent sampling.
RedactDatabooltrueOmit actual item payload data in lineage events.
MaxHopRecordsPerItemint256Maximum hop records retained per item.
EnsurePerInputTerminalRecordbooltrueEnsure a terminal lineage record exists for every input item.
EmitBackpressureDropRecordsbooltrueEmit lineage records when items are dropped due to backpressure.
IncludeContributorCorrelationIdsbooltrueInclude contributor correlation IDs in many-to-one scenarios.
EmitIntermediateNodeRecordsbooltrueEmit records for non-terminal (intermediate) nodes.

Static members: LineageOptions.CompleteLineage

AggregateNodeConfiguration<TIn>

Controls windowed aggregation behavior. Passed when configuring aggregate nodes.

Namespace: NPipeline.Configuration

PropertyTypeDefaultDescription
WindowAssignerWindowAssigner(required)Window strategy (tumbling, sliding, session).
TimestampExtractorTimestampExtractor<TIn>?nullExtracts event time from items. null = use system arrival time.
MaxOutOfOrdernessTimeSpan?5 minGrace period for late-arriving events.
WatermarkIntervalTimeSpan?30 secHow often watermarks advance.
UseThreadSafeAccumulatorbooltrueUse ConcurrentDictionary vs. Dictionary for accumulation.

PipelineContextConfiguration

Configures the initial state of PipelineContext before pipeline execution.

Namespace: NPipeline.Configuration

PropertyTypeDefaultDescription
ParametersDictionary<string, object>?nullRead-only parameters available to all nodes.
ItemsDictionary<string, object>?nullMutable shared state available to all nodes.
PropertiesDictionary<string, object>?nullAdditional properties.
RetryOptionsPipelineRetryOptions?nullRetry options (typically set via builder).
ErrorHandlerFactoryIErrorHandlerFactory?nullFactory for error handling services.
ResiliencePolicyIResiliencePolicy?nullResilience policy.
DeadLetterSinkIDeadLetterSink?nullDead-letter sink.
LoggerFactoryILoggerFactory?nullLogger factory for structured logging.
TracerIPipelineTracer?nullTracer for OpenTelemetry integration.
ObservabilityFactoryIObservabilityFactory?nullFactory for observability surfaces.
LineageFactoryILineageFactory?nullFactory for lineage tracking.
CancellationTokenCancellationTokenNoneCancellation token for the execution.

Static members: PipelineContextConfiguration.Default, PipelineContextConfiguration.WithCancellation(token)

Next Steps

Released under the MIT License.