private static async Task DreamStream(Message[] messages, string topic) { Variables.AmountOfMessagesVariable = EnvironmentVariables.AmountOfMessagesVariable; Variables.BatchTimerVariable = EnvironmentVariables.BatchTimerVariable; Variables.BatchingSizeVariable = EnvironmentVariables.BatchingSizeVariable; var delay = EnvironmentVariables.DelayInMillisecond; var producer = await ProducerService.Setup("http://etcd"); var messageHeaders = await producer.GetMessageHeaders(messages, topic); var stopwatch = new Stopwatch(); var lastRun = -1; while (true) { var time = DateTime.Now; if (time.Second != lastRun) { var loadPercentage = EnvironmentVariables.Scenario[time.Minute]; lastRun = time.Second; stopwatch.Reset(); stopwatch.Start(); var tasks = Enumerable.Range(0, messageHeaders.Length / 100 * loadPercentage) .Select(i => producer.Publish(messageHeaders[i], messages[i])); await Task.WhenAll(tasks); stopwatch.Stop(); ProducerRunTime.WithLabels("Dream-Stream").Set(stopwatch.ElapsedMilliseconds); MessagesPublished.WithLabels("Dream-Stream").Inc(messages.Length); } await Task.Delay(delay); //Delay added for test of timer on batches } }