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. P>
Y a-t-il une idée d'une notification d'arrêt / redémarrage pour synchroniser les données? P>
Merci beaucoup! P>
3 Réponses :
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). p>
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. p>
Ajouter Insights de l'application et ajouter Une alerte pour le cas spécifique que vous recherchez. p>
voir Définir des alertes dans les perspectives d'application < / p>
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
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 un moyen d'utiliser ceci: dans votre webjob microsoft.azure.webjobs.webjobsshutownwatcher code> in Nuget Package
microsoft.azure.webjobs code>.
Comme dans la version 1.1.2 du package Nuget:
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
});
...
}
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
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(); }