public class KafkaOptions { public const string Section = "Kafka"; public string BootstrapServers { get; set; } = null!; public KafkaTopicOptions Topics { get; set; } = null!; public int NumPartitions { get; set; } = 6; public short ReplicationFactor { get; set; } = 3; public int OutboxBatchSize { get; set; } = 100; public int OutboxPollIntervalMs { get; set; } = 500; public int OutboxMaxRetries { get; set; } = 10; public int MaxPoisonRetries { get; set; } = 5; public string NotificationPublisherGroupId { get; set; } = "notification-publisher"; public string NotificationPublisherAutoOffsetReset { get; set; } = "Earliest"; /// Plaintext for local compose; SaslSsl (etc.) for production. public string SecurityProtocol { get; set; } = "Plaintext"; public string? SaslMechanism { get; set; } public string? SaslUsername { get; set; } public string? SaslPassword { get; set; } public string? SslCaLocation { get; set; } }