У меня есть веб-задание Azure со следующим кодом инициализации
class Program
{
static void Main(string[] args)
{
IHostBuilder builder = new HostBuilder()
.ConfigureWebJobs(b =>
{
b.AddServiceBus((opt) =>
{
opt.ConnectionString = "Connection string";
opt.MessageHandlerOptions = new MessageHandlerOptions((ex) =>
{
return Task.Run(() =>
{
// logging the error message
});
})
{
MaxAutoRenewDuration = new TimeSpan(0, 0, 5, 0),
MaxConcurrentCalls = 1
};
});
})
.UseConsoleLifetime();
IHost host = builder.Build();
using (host)
{
host.Run();
}
}
}
Для очереди служебной шины настроена длительность блокировки 5 минут, то есть максимальное время, которое позволяет Azure.Обработка сообщений может занять более 30 минут, и механизм обновления блокировки работает правильно.Когда процесс завершается правильно, выдается исключение The lock supplied is invalid. Either the lock expired, or the message has already been removed from the queue, or was received by a different receiver instance
, и сообщение снова возвращается в очередь.