public async void Execute() { Stopwatch sw = new Stopwatch(); sw.Start(); StringBuilder logMessage = new StringBuilder(); try { logMessage.AppendLine("Starting ActivityLogDeliveryJob!"); await _service.UpdateEntriesToProcessing(); var entries = await _service.GetProcessingActivityLogs(); if (entries == null || !entries.Any()) { //not entries to send logMessage.AppendLine("No activity log entries ready for delivery."); } else { List <ActivityLog> successLogs = new List <ActivityLog>(); Dictionary <ActivityLog, ActivityLogMessage> failedLogs = new Dictionary <ActivityLog, ActivityLogMessage>(); foreach (var entry in entries) { ActivityLogMessage message = null; try { entry.ActivityLogDelivery.RetryCount++; logMessage.AppendLine($"Building Activity Log: {entry.Id}"); message = _service.BuildLogMessage(entry); logMessage.AppendLine($"Built Activity Log Message: {message.Message}"); logMessage.AppendLine($"Sending Activity Log: {entry.Id}"); var success = _paperPusherClient.SendMessage(message.Message).Result; if (success) { logMessage.AppendLine($"Successfully sent Activity Log: {entry.Id}"); successLogs.Add(entry); } else { logMessage.AppendLine($"[Warning] Failed to send Activity Log: {entry.Id}"); failedLogs.Add(entry, message); } } catch (Exception ex) { logMessage.AppendLine($"[Error] Failed to send Activity Log: {entry.Id} - {ex}"); failedLogs.Add(entry, message); } } _service.EntriesDeliveredSuccessfully(successLogs); await _service.EntriesDeliveryFailed(failedLogs); } } catch (Exception ex) { logMessage.AppendLine($"[Error] An error occurred whilst executing ActivityLogDeliveryJob. - {ex}"); } finally { sw.Stop(); logMessage.AppendLine($"Finished ActivityLogDeliveryJob! - Effort: {sw.ElapsedMilliseconds}"); Logger.Information(logMessage.ToString()); } }