我有一个使用ServiceBusTrigger的continueos WebJob。我还设置了10分钟的超时时间。 如果该函数之前完成,它将向另一个队列发送响应。
但是如果超时,它只会退出。达到超时时是否可以运行一些代码?就像一个回调函数。因此,我可以发送适当的消息,表明该进程已超时。
[Timeout("00:10:00")]
public static async Task ProcessPreflightQueueMessage([ServiceBusTrigger("%preflightQueue%")] string message, CancellationToken token, ILogger logger)
{ ... }
答案 0 :(得分:1)
是的,在函数超时的同时,它将抛出TaskCanceledException
,您可以捕获它并做您的工作。
这是我的考试。
public class Functions
{
[Timeout("00:00:30")]
public static async Task TimeoutJob(
[QueueTrigger("myqueue")] string message,
CancellationToken token,
TextWriter log)
{
try
{
await log.WriteLineAsync(message);
log.WriteLine($"-- [{DateTime.Now.ToString()}] Processing Begin --");
await Task.Delay(TimeSpan.FromMinutes(1), token);
log.WriteLine($"-- [{DateTime.Now.ToString()}] Complete Time-consuming jobs --");
}
catch (TaskCanceledException)
{
log.WriteLine("timeout");
}
log.WriteLine($"-- [{DateTime.Now.ToString()}] Processing End -- ");
}
}