namespace StellaOps.Notifier.Worker.Channels; /// /// Configuration options for channel adapters. /// public sealed class ChannelAdapterOptions { /// /// Configuration section name. /// public const string SectionName = "ChannelAdapters"; /// /// Maximum number of retry attempts for failed dispatches. /// public int MaxRetries { get; set; } = 3; /// /// Base delay for exponential backoff between retries. /// public TimeSpan RetryBaseDelay { get; set; } = TimeSpan.FromSeconds(1); /// /// Maximum delay between retries. /// public TimeSpan RetryMaxDelay { get; set; } = TimeSpan.FromSeconds(30); /// /// Timeout for individual dispatch operations. /// public TimeSpan DispatchTimeout { get; set; } = TimeSpan.FromSeconds(30); /// /// Enable HMAC signing for webhook payloads. /// public bool EnableHmacSigning { get; set; } = true; /// /// User agent string for HTTP requests. /// public string UserAgent { get; set; } = "StellaOps-Notifier/1.0"; /// /// Default concurrency limit per channel type. /// public int DefaultConcurrency { get; set; } = 10; /// /// Enable circuit breaker for unhealthy channels. /// public bool EnableCircuitBreaker { get; set; } = true; /// /// Number of consecutive failures before circuit opens. /// public int CircuitBreakerThreshold { get; set; } = 5; /// /// Duration to keep circuit open before allowing retry. /// public TimeSpan CircuitBreakerDuration { get; set; } = TimeSpan.FromMinutes(1); }