连续 WebJobs 和 CancellationToken

Continuous WebJobs and CancellationToken

我不了解取消令牌和网络作业背后的机制。

我知道我可以使用 Microsoft.Azure.WebJobs.WebJobsShutdownWatcher().Token 获取令牌并在 token.IsCancellationRequested 上做出反应,例如当 WebJobs 更新时。

场景: 连续作业,由服务总线消息触发。 该作业调用我的数据层中的一个方法。 此方法对 azure sql 数据库的不同表进行一些更新。此方法运行大约两分钟。

现在我会将令牌传递给数据层,然后我会在没有取消请求的情况下完成我的工作;否则我会结束我的更新。

现在问题:

作业宿主是否等待我的方法完成然后停止?

我是否必须将 "stopping_wait_time" 设置为足够高的值(默认值是多少?)以确保我的工作正确完成?

如果将新消息写入服务总线队列,尽管取消正在等待,但此消息是否会触发新作业?

感谢您的澄清!

不,WebJob 运行时不会等待您的方法完成。您可以使用 WebJobShutdownWatcher 检索的取消令牌仅允许您收到 Web 作业正在停止的通知。它只允许您的代码有一点时间正常关闭。

连续 web 作业的默认等待时间为 5 秒,但您可以按照您的建议使用 "stopping_wait_time" 设置来增加它。

就我所见,如果您的网络作业正在停止,它不会再接受新的消息触发器,直到它重新启动。但是我没有在文档中找到任何可以证实这一点的东西。

此处描述了 webjobs 的正常关闭:https://github.com/projectkudu/kudu/wiki/Web-Jobs

希望这对您有所帮助,

朱利安