内置重试策略失败后,如何在azure函数中记录消息



我正在编写一个azure函数,用于向服务总线发送消息,如下所示。根据文档,有一个内置的重试策略,如果服务总线返回瞬态异常,该策略将重试5次。我想在以下两种情况中的任何一种情况下写一条日志语句:

  1. 发生非瞬态错误
  2. 出现暂时错误,但重试策略中的所有重试都失败

在出现暂时异常的情况下,重试策略执行的每次重试都会执行日志语句吗?还是重试策略尝试了五次,然后重新抛出异常,使得我的自定义日志语句在重试后只执行一次?

[FunctionName("MessageLoader")]
[return: ServiceBus("%Topic_Name%", Connection = "Topic_Connection")]
public static async Task<TopicMessage> Run(
[HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = "domain/load-message")] HttpRequestMessage req)
{
try
{
var stringRequestBody = await req.Content.ReadAsStringAsync();
return JsonConvert.DeserializeObject<TopicMessage>(stringRequestBody);
}
catch
{
_log.LogError("Could not send message: " + customBusinessObject.custom_message"); }
}
}

您的代码每次重试都会记录一个错误。

无法处理的邮件(所有重试都失败(将被移到死信队列中。

所以,如果您想在所有退休失败后执行一些工作负载,您可以创建单独的函数并将其订阅到死信队列。死信队列的路径如下:

<queue path>/$deadletterqueue
<topic path>/Subscriptions/<subscription path>/$deadletterqueue

请在此处阅读更多信息:https://learn.microsoft.com/en-us/azure/service-bus-messaging/service-bus-dead-letter-queues#path-到死信队列

最新更新