gpt4 book ai didi

azure - 如何处理应用洞察中webjobs的异常?

转载 作者:行者123 更新时间:2023-12-03 04:12:13 28 4
gpt4 key购买 nike

当 webjob 抛出异常时,它会退出而不记录到应用程序见解。观察到将日志刷新到应用程序洞察需要几分钟的时间,因此我们在这里遗漏了异常。如何处理这个问题?

此外,是否有一种方法可以将遇到异常的消息自动移动到有害队列,而无需手动将该消息插入到有害队列?

我正在为 2 个 NuGet 包使用最新的稳定 3.x 版本:Microsoft.Azure.WebJobs 和 Microsoft.Azure.WebJobs.Extensions

创建了一个实现 IHost 的主机,如下所示:

        var builder = new HostBuilder()
.UseEnvironment("Development")
.ConfigureWebJobs(b =>
{
...
})
.ConfigureLogging((context, b) =>
{
string appInsightsKey = context.Configuration["APPINSIGHTS_INSTRUMENTATIONKEY"];
if (!string.IsNullOrEmpty(appInsightsKey))
{
b.AddApplicationInsights(o => o.InstrumentationKey = appInsightsKey);
appInsights.TrackEvent("Application Insights is starting!!");
}
})
.ConfigureServices(services =>
{
….
})
.UseConsoleLifetime();
var host = builder.Build();
using (host)
{
host.RunAsync().Wait();
}

和Function.cs

   public static async void ProcessQueueMessageAsync([QueueTrigger("queue")] Message message, int dequeueCount, IBinder binder, ILogger logger)
{
switch (message.Name)
{
case blah:
...break;
default:
logger.LogError("Invalid Message object in the queue.", message);
logger.LogWarning("Current dequeue count: " + dequeueCount);
throw new InvalidOperationException("Simulated Failure");
}
}

我的问题是:

1) 当遇到默认情况时,Web 作业将立即终止,并且即使在等待并再次启动 Web 作业之后,记录器也不会刷新到应用程序洞察中。由于需要几分钟才能反射(reflect)在应用程序见解中,并且网络作业停止,因此我丢失了错误日志。如何处理这个问题?

2) 从此处的示例网络作业中,https://github.com/Azure/azure-webjobs-sdk-samples/blob/master/BasicSamples/QueueOperations/Functions.cs他们正在使用 JobHost host = new JobHost();如果“FailAlways”功能失败,它会自动重试5次并将消息推送到毒队列中。但这在我的代码中没有发生。是因为Host不同吗?或者我需要添加更多配置吗?

最佳答案

尝试更改您的函数以返回 Task 而不是 void:

public static async Task ProcessQueueMessageAsync([QueueTrigger("queue")] Message message, int dequeueCount, IBinder binder, ILogger logger)

这对我很有用,即使我记录错误并引发异常,Application Insights 也会显示调用成功或没有发生调用。

关于azure - 如何处理应用洞察中webjobs的异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55813966/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com