Изящное завершение веб-заданий Azure

Я планирую использовать непрерывную веб-работу Azure для отправки электронных писем и push-уведомлений. Я понимаю, что WebJobs будут запускаться и останавливаться время от времени по разным причинам. Это хорошо, но я хотел бы иметь возможность "убраться" до того, как работа будет закрыта.

Таким образом, мой WebJob может обновлять состояние записей базы данных или удалять элементы очереди, которые уже были обработаны в каждом пакете, чтобы повторные сообщения не отправлялись при следующем запуске задания.

В качестве пробной картинки я попытался добавить следующий код в консольное приложение C #:

Console.CancelKeyPress += (object sender, ConsoleCancelEventArgs e) =>
{
  e.Cancel = true;
  program.keepRunning = false;
};

А затем я использовал keepRunning bool для управления основным циклом while и поместил Console.Writeline ("Exited Gracefully") вне цикла while. Но это, похоже, не помогло. Когда я сообщаю о прекращении работы (используя кнопку остановки на вкладке Веб-задания на моем веб-сайте Azure), задание исчезает из списка и появляется сообщение «Не удалось остановить задание:« JobName ».» на портале Azure (внизу страницы). Я не вижу текст «Exited Gracefully» в журнале WebJob. Поэтому я вынул этот код, потому что он не помог.

Итак, я ищу хороший способ, чтобы мой WebJob был уведомлен о том, что его секунды сочтены и что ему нужно навести порядок в своих делах.

Ответы на вопрос(1)

Ваш ответ на вопрос