public KafkaStreamProviderOptions(IEnumerable<Uri> connectionStrings, string topicName, string consumerGroupName)
{
if (string.IsNullOrEmpty(topicName)) throw new ArgumentNullException(nameof(topicName));
if (string.IsNullOrEmpty(consumerGroupName)) throw new ArgumentNullException(nameof(consumerGroupName));
var enumerableConnectionStrings = connectionStrings as IList<Uri> ?? connectionStrings.ToList();
if (connectionStrings == null || !enumerableConnectionStrings.Any()) throw new ArgumentNullException(nameof(connectionStrings));
_connectionStrings = enumerableConnectionStrings;
_topicName = topicName;
_consumerGroupName = consumerGroupName;
NumOfQueues = DefaultNumOfQueues;
CacheSize = DefaultCacheSize;
ProduceBatchSize = DefaultProduceBatchSize;
TimeToWaitForBatchInMs = DefaultTimeToWaitForBatchInMs;
MaxBytesInMessageSet = DefaultMaxBytesInMessageSet;
AckLevel = DefaultAckLevel;
ReceiveWaitTimeInMs = DefaultReceiveWaitTimeInMs;
OffsetCommitInterval = DefaultOffsetCommitInterval;
ShouldInitWithLastOffset = DefaultShouldInitWithLastOffset;
MaxMessageSizeInBytes = DefaultMaxMessageSizeInBytes;
CacheTimespanInSeconds = DefaultCacheTimespanInSeconds;
CacheNumOfBuckets = DefaultCacheNumOfBucketsParam;
MetricsPort = DefaultMetricsPort;
IncludeMetrics = DefaultIncludeMetrics;
UsingExternalMetrics = DefaultUsingExternalMetrics;
}