0
votes

Le webjob continu azur fonctionne, mais il a été arrêté / redémarré de manière inattendue

Notre application utilise un WebJob pour générer les données, un instant que nous sommes confrontés à un problème, il a été arrêté / redémarré de manière inattendue lors du traitement de la file d'attente des messages. Cela conduit à notre webjob ne sais pas quand il forçait le redémarrage / l'arrêt de la marque quelles données ont été traitées, puis laissez le webjob redémarrer / arrêter après.

Y a-t-il une idée d'une notification d'arrêt / redémarrage pour synchroniser les données?

Merci beaucoup!


0 commentaires

3 Réponses :


1
votes

Si vous utilisez des files d'attente, un webjob de redémarrage ne doit pas vous empêcher de perdre des données. Étant donné que le message ne sera pas terminé, il sera remis sur la file d'attente du traitement (re).

En ce qui concerne le redémarrage des choses: Assurez-vous de ne pas avoir de scénario en code qui brise complètement le webjob.

Ajouter Insights de l'application et ajouter Une alerte pour le cas spécifique que vous recherchez.

voir Définir des alertes dans les perspectives d'application < / p>


1 commentaires

Merci pour votre réponse, oui Vous avez raison, nos données ne seront pas perdées, mais dans ce cas, le WebJob ne sait pas que le redémarrage du redémarrage pour marquer les données a été traité, puis laissez le webjob redémarrer / arrêter. Avez-vous des idées pour cette affaire? Merci



0
votes

Parfois, des webjobs peuvent être tués par des procédures d'échelle. Vous pouvez vous assurer qu'ils ont une mort gracieuse en écoutant l'événement d'arrêt en utilisant la classe microsoft.azure.webjobs.webjobsshutownwatcher code> in Nuget Package microsoft.azure.webjobs code>. Comme dans la version 1.1.2 du package Nuget: xxx pré>

un moyen d'utiliser ceci: dans votre webjob programme.cs code> classe vous obtenez un jeton d'annulation et écrivez le Code que vous souhaitez être exécuté lors de l'arrêt de l'arrêt. P>

private static void Main()
{
    ...
    var cancellationToken = new WebJobsShutdownWatcher().Token;
    ...
    cancellationToken.Register(() =>
    {
        //Your data operations here
    });
    ...
}


1 commentaires

Merci pour vos informations. J'ai essayé cette approche, mais ce n'était pas très bien fonctionné, WebJob n'attend que 5 secondes avant de redémarrer / arrêter bien que je définissais 60 secondes dans le fichier Paramètres.job. Voici mon code ci-dessous



0
votes

Merci Diana pour vos informations. J'ai essayé cette approche, mais ce n'était pas très bien fonctionné, WebJob n'attend que 5 secondes avant de redémarrer / arrêter bien que je définissais 60 secondes dans le fichier Paramètres.job. Voici mon code ci-dessous

    static void Main()
    {
        var config = new JobHostConfiguration();

        var host = new JobHost();

        var cancellationToken = new WebJobsShutdownWatcher().Token;
        cancellationToken.Register(() =>
        {
            //Raise the signal
        });

        // The following code ensures that the WebJob will be running continuously
        host.RunAndBlock();
    }


0 commentaires