Encerramento gracioso dos WebJobs do Azure
Estou planejando usar um WebJob contínuo do Azure para enviar emails e notificações por push. Entendo que os WebJobs serão iniciados e parados de tempos em tempos por vários motivos. Tudo bem, mas eu gostaria de ter a oportunidade de "limpar" antes do encerramento do trabalho.
Dessa forma, meu WebJob pode atualizar o status dos registros do banco de dados ou excluir itens da fila que já foram processados em cada lote, para que mensagens duplicadas não sejam enviadas na próxima vez que o trabalho for executado.
Como um tiro no escuro, tentei adicionar o seguinte código ao meu aplicativo de console C #:
Console.CancelKeyPress += (object sender, ConsoleCancelEventArgs e) =>
{
e.Cancel = true;
program.keepRunning = false;
};
E então usei o bool keepRunning para controlar o loop while principal e coloquei um Console.Writeline ("Expected Graceful") fora do loop while. Mas isso não pareceu ajudar. Quando digo ao trabalho para parar (usando o botão Parar na guia Webjobs do meu Site do Azure), o trabalho desaparece da lista e diz "Não foi possível parar o trabalho: 'JobName'". no portal do Azure (na parte inferior da página). Não vejo o texto "Saído graciosamente" no log do WebJob. Então tirei esse código, pois não estava ajudando.
Portanto, estou procurando uma boa maneira de o meu WebJob ser notificado de que seus segundos estão numerados e que ele precisa colocar seus assuntos em ordem.