2016-03-24 78 views
0

此问题与WebJobs中的QueueTrigger和ErrorTrigger有关。 我在一个公共类中有一个Process Queue方法(请参阅下面的代码)。当发生任何异常(例如Timeout异常)时,我们有5次重试尝试来处理队列。 5次尝试失败后,我们希望发送警报邮件给一个收件人。为了做到这一点,我添加了一个使用ErrorTrigger属性的方法(请参阅下面的代码)并设置阈值和窗口值。但在5次重试之后,它不会触及ErrorTrigger方法。你能看看这个代码,让我知道我做错了什么吗?如果在5次重试尝试失败后还有其他方式发送警报邮件,请帮助我。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

代码示例看起来uncleand-我又共享代码 –

+0

如果我在ErrorTrigger改变threashold值5,然后也不会打这个方法重试threashold完成后。 –

回答

0

在您的例子[ErrorTrigger("00:00:10", 4)]不是错误触发:“如果在10秒内4个错误”(见Error-Monitoring) - 这可能是一个队列有点快。

尝试在5分钟内[ErrorTrigger("00:05:00", 4)] =四类故障