public void Connect() { if (_consumerClient != null) { return; } ConnectionLock.Wait(); try { if (_consumerClient == null) { _kafkaOptions.MainConfig["group.id"] = _groupId; _kafkaOptions.MainConfig["auto.offset.reset"] = "earliest";//初始化连接时读取最早的信息 var config = _kafkaOptions.AsKafkaConfig(); _consumerClient = new ConsumerBuilder <string, byte[]>(config) .SetErrorHandler(ConsumerClient_OnConsumeError) .Build(); } } finally { ConnectionLock.Release(); } }
public IProducer <string, byte[]> RentProducer() { if (_producerPool.TryDequeue(out var producer)) { Interlocked.Decrement(ref _pCount); return(producer); } producer = new ProducerBuilder <string, byte[]>(_options.AsKafkaConfig()).Build(); return(producer); }
public ConnectionPool(ILogger <ConnectionPool> logger, IOptions <KafkaOptions> options) { _options = options.Value; _producerPool = new ConcurrentQueue <IProducer <string, byte[]> >(); _maxSize = _options.ConnectionPoolSize; logger.LogDebug("Caf Kafka configuration: {0}", JsonConvert.SerializeObject(_options.AsKafkaConfig(), Formatting.Indented)); }