我遇到的情况是,blob 第一次可能无法处理,但可能会在后续执行中起作用。
我遇到的问题是围绕监控真正的失败,目前第一次失败将引发异常,该异常会被记录并发出警报,但如果第一次重试成功完成,则根据早期的警报无事可做。
有没有办法查看已经发生的重试次数,这样我只能在不再重试时发出警报?
我遇到的情况是,blob 第一次可能无法处理,但可能会在后续执行中起作用。
我遇到的问题是围绕监控真正的失败,目前第一次失败将引发异常,该异常会被记录并发出警报,但如果第一次重试成功完成,则根据早期的警报无事可做。
有没有办法查看已经发生的重试次数,这样我只能在不再重试时发出警报?
您可以更改函数处理程序以检索消息元数据,包括出队计数。
[FunctionName("QueueTriggerMetadata")]
public static void Run([QueueTrigger("101functionsqueue", Connection = "AzureWebJobsStorage")]CloudQueueMessage myQueueItem, TraceWriter log)
{
log.Info("101 Azure Function Demo - Retrieving Queue metadata");
log.Info($"Queue ID: {myQueueItem.Id}");
log.Info($"Queue Insertion Time: {myQueueItem.InsertionTime}");
log.Info($"Queue Expiration Time: {myQueueItem.ExpirationTime}");
log.Info($"Queue Payload: {myQueueItem.AsString}");
log.Info($"Dequeue Count: {myQueueItem.DequeueCount }");
}
话虽如此,您可能仍想使用毒队列来处理失败的消息,就像 Mike 在他的回答中建议的那样。这取决于您的确切情况。
在 Blob 触发器函数最后一次失败后,Azure 应将一条消息写入名为webjobs-blobtrigger-poison
. 您可以监视此存储队列中是否有新消息,以作为在重试用尽后监视实际故障的一种方式。