in src/Microsoft.Azure.WebJobs.Extensions.Kafka/Listeners/Scaler/KafkaScalerProvider.cs [28:47]
public KafkaScalerProvider(IServiceProvider serviceProvider, TriggerMetadata triggerMetadata)
{
var config = serviceProvider.GetService<IConfiguration>();
var nameResolver = serviceProvider.GetService<INameResolver>();
KafkaMetaData kafkaMetadata = JsonConvert.DeserializeObject<KafkaMetaData>(triggerMetadata.Metadata.ToString());
kafkaMetadata.ResolveProperties(config, nameResolver);
IOptions<KafkaOptions> options = serviceProvider.GetService<IOptions<KafkaOptions>>();
string topicName = kafkaMetadata.Topic;
string consumerGroup = kafkaMetadata.ConsumerGroup;
long lagThreshold = kafkaMetadata.LagThreshold;
ILoggerFactory loggerFactory = serviceProvider.GetService<ILoggerFactory>();
ILogger logger = loggerFactory.CreateLogger(LogCategories.CreateTriggerCategory("Kafka"));
var consumerConfig = GetConsumerConfiguration(kafkaMetadata, config, nameResolver);
var consumer = new ConsumerBuilder<string, string>(consumerConfig).Build();
var metricsProvider = new KafkaMetricsProvider<string, string>(topicName, new AdminClientConfig(consumerConfig), consumer, logger);
_scaleMonitor = new KafkaObjectTopicScaler(topicName, consumerGroup, metricsProvider, triggerMetadata.FunctionName, lagThreshold, logger);
_targetScaler = new KafkaObjectTargetScaler(topicName, consumerGroup, metricsProvider, triggerMetadata.FunctionName, lagThreshold, logger);
}