c# - Azure 服务总线客户端是否会自动重试从服务总线返回的暂时性错误?

标签 c# .net azure azure-functions

我有一个非常简单的 Azure 函数,它使用 Http 触发器将消息发送到 Azure 服务总线主题。如果服务总线返回暂时性错误,我想重试此函数。我已经评论过the default policy ,但我不知道如何验证它是否会开箱即用。我是否需要在函数代码中添加任何内容以确保使用此类重试策略?

我还想记录重试策略失败后未能加载到服务总线上的消息。我应该将函数的内容包装在 try-catch block 中并在 catch 语句中执行日志吗?

[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)
{
    var stringRequestBody = await req.Content.ReadAsStringAsync();
    return JsonConvert.DeserializeObject<TopicMessage>(stringRequestBody);
}

最佳答案

是的,在本例中(服务总线绑定(bind)),default retry policy用来。您不需要做任何特别的事情。要验证它是否正常工作,您应该看到 failed dependencies每当调用失败时,如果您integrated it correctly,就会在应用程序见解中.

关于你的第二个问题,如果重试放弃后失败,则不需要手动登录。如果您integrated it correctly,您应该会看到自动捕获的应用程序见解中记录的错误.

如果您想在失败时记录自定义错误,您应该使用 Servicebus message sender by creating it yourself而不是函数输出绑定(bind)。

关于c# - Azure 服务总线客户端是否会自动重试从服务总线返回的暂时性错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64297345/

相关文章:

c# - 将 DateTime 转换为另一种格式

c# - .Net 将 Windows 窗体导出为 PDF

c# - 使用 View.Details 用 ImageList 填充 ListView

Azure DevOps 重命名分类

发布到 Marketplace 的 Azure 托管应用程序无法向自定义提供程序发出 POST 请求(由于 swagger 被阻止?)

sql - df.to_sql 连接问题,知道吗?

c# - 文件路径是url吗?

C# 发送 Nullable 枚举作为参数

c# - 通过自定义结构类型验证原始 .NET 值类型 : Is it worth the effort?

c# - WCF 抛出异常