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

标签 c# .net azure azure-functions

我正在编写一个 azure 函数来将消息发送到服务总线,如下所示。 According to the documentation ,有一个内置的重试策略,如果服务总线返回暂时性异常,将重试 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-to-the-dead-letter-queue

关于c# - 内置重试策略失败后,如何在 azure 函数中记录消息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64321364/

相关文章:

c# - Entity Framework 代码优先模型中的不可空虚拟属性

c# - 将 DataGridView 的最后一行卡住为列的总和?

c# - Web Api 2 Controller 和处理程序之间有五秒的延迟

c# - 在 UWP 中将 BitmapImage 转换为字节数组

c# - WPF 中 MediaElement 中的视频淡入淡出

python - Azure Functions Python 应用程序 - 启用 IdentityModelEventSource.ShowPII 属性

php - 检查 Azure 中是否存在 blob

c# - 文件恢复

c# - 在 .NET 中读取/保存 PixelFormat.Format48bppRgb PNG 位图?

Azure WebJobs - 按参数值查找调用