private void DisposeInnerProducer() { // Dispose only if still in cache to avoid ObjectDisposedException if (!ProducersCache.TryRemove(Endpoint.Configuration.ConfluentConfig, out _)) { return; } _innerProducer?.Flush(TimeSpan.FromSeconds(10)); _innerProducer?.Dispose(); _innerProducer = null; }
/// <summary> /// Kafka event producer constructor. /// </summary> /// <param name="producer">Kafka producer.</param> /// <param name="topic">Kafka topic.</param> /// <param name="logger"></param> public KafkaEventProducerAsync(Confluent.Kafka.IProducer <TKey, TValue> producer, string topic, ILogger logger = null) { this.producer = producer; this.topic = topic; this.logger = logger; }
public KafkaProducer(Confluent.Kafka.IProducer <TKey, TValue> kafkaProducer) { this._kafkaProducer = kafkaProducer; }
private Confluent.Kafka.IProducer <byte[], byte[]> GetInnerProducer() => _innerProducer ?? (_innerProducer = ProducersCache.GetOrAdd(Endpoint.Configuration.ConfluentConfig, _ => CreateInnerProducer()));