我有一堆webjob队列处理函数:
public static void ProcessSomething(
[QueueTrigger("testrequest")] TestThing thing,
TextWriter logger,
CancellationToken token)
我对优雅的关机感到困惑。所以 - 当您关闭webjob(或重新部署到它)时,它允许当前处理webjob运行并完成 - 默认情况下,您的Queue处理程序有5秒钟完成。您可以将CancellationToken
传递给方法以检查取消请求,如果您的网络工作可能需要更长时间,请按照“优雅关机”中的说明进行操作。 this article的一部分。
好的,但奇怪的是,我发现当Queue处理程序在关机期间运行时,令牌已设置IsCancellationRequested
,但即使函数在一秒钟内完成,然后该队列项被标记为"从未完成",并且在10分钟内(在该队列项的租用时间到期之后),它返回到队列中。
这是设计吗?我可以改变这种行为吗?例如,如果您的队列处理程序正在发送电子邮件,并且它在关闭期间被触发,那么它将发送电子邮件,然后标记为从未完成,然后在10分钟后再次发送电子邮件。
帮助!