2016-03-24 1 views
0

Cette question est liée à QueueTrigger et ErrorTrigger dans WebJobs. J'ai une méthode Process Queue dans une classe publique (voir le code ci-dessous). Lorsqu'une exception survient (par exemple, exception Timeout), nous essayons à nouveau de traiter la file d'attente. Après 5 tentatives infructueuses, nous voulons envoyer un message d'alerte à un destinataire. Pour ce faire, j'ai ajouté une méthode en utilisant l'attribut ErrorTrigger (voir le code ci-dessous) et en définissant le seuil et la valeur de la fenêtre. Mais dans mon cas après 5 réessayer, il ne frappe pas la méthode ErrorTrigger. Pourriez-vous s'il vous plaît regarder ce code et laissez-moi savoir où je me trompe? Et s'il y a un autre moyen d'envoyer un mail d'alerte après 5 tentatives infructueuses, merci de m'aider.Azure WebJobs SDK ErrorTrigger

public static class ProcessQueue 
    { 
     public static void ProcessQueue([QueueTrigger("testqueue")] string queueMessage, TextWriter logger) 
     { 
      try 
      { 
       if (logger != null) 
       { 
        //logger.WriteLine(filter.GetDetailedMessage(5)); 
        //message.Text = filter.GetDetailedMessage(1); 
       } 
       throw new TimeoutException(); // Intentionaly throwing timeout exception 
       } 
      catch (Exception ex) 
      { 
       throw ex; 
      } 
     } 
     public static void ErrorMonitor(
     [ErrorTrigger("00:00:10", 4)] TraceFilter filter, TextWriter log, 
     [SendGrid(To = "[email protected]", Subject = "Error!")] 
     SendGridMessage message) 
     { 
      // log last 5 detailed errors to the Dashboard 
      log.WriteLine("Test"); 
      message.Text = "Failed"; 
     } 
} 
+0

semble uncleand- Je partage de code à nouveau –

+0

Si je change la valeur threashold dans ErrorTrigger à 5 puis aussi ne pas frapper cette méthode après nouvelle tentative threashold complète. –

Répondre

0

Dans votre exemple [ErrorTrigger("00:00:10", 4)] est pas déclencheur d'erreur: «S'il y a 4 erreurs dans une période de 10 secondes » (voir Error-Monitoring) - qui pourrait être peu rapide pour une file d'attente.

Essayez [ErrorTrigger("00:05:00", 4)] = quatre échecs dans un échantillon de code de 5 minutes