public ConsumerSettings ToLongRunning(TimeSpan?maxHandlingTime = default) { var clone = new ConsumerSettings(this); clone.SetLongRunning(maxHandlingTime); return(clone); }
public KafkaConsumer( IObserverFactory observerFactory, IEventDeserializer deserializer, ConsumerSettings settings, ILoggerFactory loggerFactory) { if (deserializer == null) { throw new ArgumentNullException(nameof(deserializer)); } if (settings == null) { throw new ArgumentNullException(nameof(settings)); } _observerFactory = observerFactory ?? throw new ArgumentNullException(nameof(observerFactory)); _logger = loggerFactory.CreateLogger <KafkaConsumer>(); if (string.IsNullOrWhiteSpace(settings.Config.BootstrapServers)) { throw new InvalidOperationException("Brokers not specified."); } if (string.IsNullOrEmpty(settings.Topic)) { throw new InvalidOperationException("Topics not specified."); } if (string.IsNullOrEmpty(settings.Config.GroupId)) { throw new InvalidOperationException("Group Id not specified."); } _consumer = new ConsumerBuilder <Guid, IStreamEvent>(settings.Config) .SetKeyDeserializer(KeyDeserializer) .SetValueDeserializer(new ValueObjectDeserializer(deserializer)) .SetErrorHandler((_, e) => _logger.LogError( $"KafkaConsumer internal error: Topic: {settings.Topic}, {e.Reason}, Fatal={e.IsFatal}," + $" IsLocal= {e.IsLocalError}, IsBroker={e.IsBrokerError}")) .Build(); _consumer.Subscribe(settings.Topic); }
private ConsumerSettings(ConsumerSettings other) { Config = other.Config; Topic = other.Topic; }