我有一个非常简单的 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/