Когда исключение выдается из веб-задания, оно завершается без регистрации сведений о приложении.Заметил, что очистка журналов до понимания приложения занимает несколько минут, поэтому здесь мы пропускаем исключения.Как с этим справиться?
Кроме того, есть ли способ автоматически переместить сообщение, попавшее в исключение, в очередь отравления, без ручной вставки этого сообщения в очередь отравления?
Я использую последние стабильные версии 3.x для 2 пакетов NuGet: 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) Когда задан случай по умолчанию, webjob немедленно завершается, а регистраторы неполучить представление о приложении даже после ожидания и повторного запуска веб-задания.Поскольку на понимание идей приложения уходит несколько минут, и веб-работа прекращается, я теряю журналы ошибок.Как с этим справиться?
2) Из примеров веб-заданий здесь: https://github.com/Azure/azure-webjobs-sdk-samples/blob/master/BasicSamples/QueueOperations/Functions.cs они используют JobHost host = new JobHost ();и если происходит сбой функции FailAlways, она автоматически повторяется 5 раз и помещает сообщение в очередь отравления.Но этого не происходит в моем коде.Это из-за разных хостов?или я должен добавить еще конфигурации?