private void DequeueAndSendEmails() { var messages = EmailController.Dequeue(20); foreach (var message in messages) { bool requeueMessage = true; try { if (message.EmailMessage.SendDate <= DateTime.UtcNow) { EmailController.SendEmail(message.EmailMessage); message.Delete(); requeueMessage = false; } } catch (Exception ex) { if (failureCount++ < 100) { ExceptionHelper.Log(ex, string.Empty); } } finally { if (requeueMessage) { message.Requeue(); } } } }