public static async Task BatchProcessor( [QueueTrigger(_QUEUENAME)] string message, [Table(_INDEXERTABLENAME)] CloudTable summaryTable, [EventHub(_EVENTHUBEPATH, Connection = "EventHubConnection")] IAsyncCollector <string> eventHub, ILogger logger) { var run = DateTime.Now; logger.LogInformation($"Processing batch {run}"); var analytics = LogAnalyticQuery.GetInstance(logger); if (_local) { await analytics.AuthenticateWithClient(tenantId, _clientId, _clientSecret); } else { await analytics.AuthenticateWithMSI(); } var timer = Stopwatch.StartNew(); var summary = JsonConvert.DeserializeObject <Summary>(message); var events = await analytics.FetchEvents($"datetime({summary.LastCursor})", $"datetime({summary.NextCursor})"); await eventHub.SendEvents(events, logger); summary = new Summary(summary.LastCursor, summary.NextCursor, events.Count, "OK", timer.ElapsedMilliseconds, run); summary.ETag = "*"; //Etag required for replace await summaryTable.ExecuteAsync(TableOperation.Replace(summary)); }